All Projects → gfviegas → express-rest-api

gfviegas / express-rest-api

Licence: MIT license
🍺 RESTful API sample in Express, Mongoose and ES6.

Programming Languages

javascript
184084 projects - #8 most used programming language
Pug
443 projects
shell
77523 projects

Projects that are alternatives of or similar to express-rest-api

Littlewin.server
A blog backend server based on koa + mongoose.
Stars: ✭ 32 (+14.29%)
Mutual labels:  mongoose, restful
NodeRestApi
Node.js, Express.js and MongoDB REST API App
Stars: ✭ 38 (+35.71%)
Mutual labels:  mongoose, restful
Node Express Mongoose Passport Jwt Rest Api Auth
Node, express, mongoose, passport and JWT REST API authentication example
Stars: ✭ 146 (+421.43%)
Mutual labels:  mongoose, restful
Nodepress
😎 RESTful API service for Blog/CMS, powered by @nestjs
Stars: ✭ 829 (+2860.71%)
Mutual labels:  mongoose, restful
Es6 Express Mongoose Passport Rest Api
Lightweight boilerplate for Node RESTful API, ES6, Express, Mongoose and Passport 🎁
Stars: ✭ 36 (+28.57%)
Mutual labels:  mongoose, restful
Node Typescript Mongodb
node js typescript mongodb express generator yo
Stars: ✭ 96 (+242.86%)
Mutual labels:  mongoose, restful
Koa Restful Boilerplate
Koa 2 RESTful API boilerplate
Stars: ✭ 146 (+421.43%)
Mutual labels:  mongoose, restful
TvrboReact
Dream starter project: React, Redux, React Router, Webpack
Stars: ✭ 13 (-53.57%)
Mutual labels:  mongoose
gothic
🦇 Gothic is a user registration and authentication SWT/JWT microservice. It supports REST, gRPC, and gRPC Web API, reCAPTCHA & a variety of DBs with Gorm.
Stars: ✭ 65 (+132.14%)
Mutual labels:  restful
mongoose-slug-updater
Schema-based slug plugin for Mongoose - single/compound - unique over collection/group - nested docs/arrays - relative/abs paths - sync on change: create/save/update/updateOne/updateMany/findOneAndUpdate tracked - $set operator - counter/shortId
Stars: ✭ 37 (+32.14%)
Mutual labels:  mongoose
node-server-template
This is Node.js server tidy template / boilerplate with Express (with asyncified handlers, custom error handler) framework and MongoDb. The server use ES6 and above. On different branches you can see different techniques' and technologies' usage, such as Kafka, nodemailer, file download... You also can find postman collections.
Stars: ✭ 116 (+314.29%)
Mutual labels:  mongoose
Apriliya-Api
Simple Web API with user authentication
Stars: ✭ 19 (-32.14%)
Mutual labels:  mongoose
mongoose-plugin-cache
The Perfect Marriage of MongoDB and Redis
Stars: ✭ 42 (+50%)
Mutual labels:  mongoose
grapevine
Fast, unopinionated, embeddable, minimalist web framework for .NET
Stars: ✭ 72 (+157.14%)
Mutual labels:  restful
chat-app-server
Back-end server for chat application built using express, moongodb & socket.io for Frontend (https://github.com/binbytes/nuxt-chat-app).
Stars: ✭ 30 (+7.14%)
Mutual labels:  mongoose
koa-session-mongoose
Mongoose store for Koa sessions
Stars: ✭ 29 (+3.57%)
Mutual labels:  mongoose
pothole detection
By using this app users can report the potholes on road by clicking a photo via our app and if a pothole is detected by Machine Learning modal then it is saved to our Database from where officials can view the specifics like location,reported by and official can resolve the request.User are notified by email for every update regarding their request
Stars: ✭ 17 (-39.29%)
Mutual labels:  mongoose
protean
Evolve your RESTful API's and Web Services
Stars: ✭ 31 (+10.71%)
Mutual labels:  restful
Discord.js-MongoDB-bot
Discord.js botları için Mongoose veritabanı (database) kullanım örnekleri.
Stars: ✭ 13 (-53.57%)
Mutual labels:  mongoose
Discord-Template-V13
An easy-to-use discord bot including database, slash commands and context menus !
Stars: ✭ 103 (+267.86%)
Mutual labels:  mongoose

Build Status Dependency Status Standard - JavaScript Style Guide

API RESTful em Express, Mongoose, Mocha e Chai.

Scripts

Os seguintes scripts estão disponiveis com yarn run SCRIPT ou npm run SCRIPT

Script Descrição
test Roda o linter, roda os testes unitários e os testes de integração, em sequência
start Inicia o servidor com hot auto-reload utilizando o nodemon
dev Inicia o servidor de desenvolvimento com hot auto-reload utilizando o nodemon
dev-win Inicia o servidor de desenvolvimento com hot auto-reload utilizando o nodemon em legacy mode para windows
lint Roda o ESLINT para conferir o styleguide do código
prod Inicia o servidor de produção com hot auto-reload utilizando o nodemon
seed Alimenta o banco de dados através das estratégias na pasta seed
test:integration Roda apenas os testes de integração, uma única vez
test:integration-server Inicia o servidor de desenvolvimento dos testes de integração, com auto-reload
test:unit Roda apenas os testes unitários, uma única vez
test:unit-server Inicia o servidor de desenvolvimento dos testes unitários, com auto-reload
test:report Gera o relatório de cobertura dos testes

Sobre este boilerplate

Organização de Pastas

Vamos seguir um padrão de organização de pastas para ficar cada coisa em seu lugar e clean.

./

Temos nosso entry point index.js que vai inicializar nossa aplicação.

Também temos o nosso arquivo .env que abriga as variáveis de ambiente que usaremos

./config

A pasta config abriga os scripts pra inicializar o server e a conexão do mongoose. A medida que precisarmos de novos scripts de configuração ou conexão da API, coloque-os aqui.

./actions

Sabe aquele GET api/v1/module que só tem a função de dar um GET da entidade e retornar? Muitas vezes você vai utilizar métodos que são idênticos em múltiplos models. É pra isso que essa folder existe. Ela abriga pequenas ações reaproveitáveis ao invés de poluir os controllers com códigos iguais. Utilize quantas e quais sentir necessidade, a maioria das vezes serão operações com o mongoose.

./helpers

Coloque aqui os arquivos helpers, funcões modularizadas que vão facilitar a manutenção do seu código. Diferente do actions as funções aqui abrigadas não tem relação com controllers, elas podem fazer simples operações como criptografar uma string ou calcular uma média.

Divida os helpers em folders como achar conveniente (ex: helpers/math para operações matemáticas, helpers/string para manipulação de strings, etc).

./modules

Aqui é onde vive a lógica e as rotas de sua API. Antes de cada módulo em si, precisamos versioná-los, abrigando as pastas v1, v2, e etc.

./modules/v1

Módulos da versão 1 da nossa API. As APIs simples e com poucos clientes terão, na maioria das vezes, apenas uma versão. Ainda sim deveremos versioná-los.

Pra cada módulo de nossa API, criaremos uma pasta aqui dentro.

Além disso também temos um arquivo routes.js que "aplicam" as rotas dos módulos de sua versão. Por quê um routes.js por versão? Porque em uma determinada versão você pode não possuir uma rota X, ou possuir uma Y com nome diferente, ou até uma Z nova. É bom fazer as coisas dinâmicas, mas não dá pra pensar em muita mágica em uma situação dessas.

./modules/v1/nomeDoModulo

Para cada módulo nós vamos possuir os seguintes files:

routes.js

É aqui que definimos nossos endpoints desse módulo. Alguns módulos não possuem criação ou delete por exemplo. Outros possuem alguns sub-documentos que devem ser servidos. Declare todas as rotas nesse arquivo.

controller.js

Quando cairmos nas rotas, o que a API deve fazer? Essa responsabilidade é de nosso controller, que vai utilizar actions comuns do mongoose e/ou outros métodos que você vai cadastrar nesse file.

model.js

Auto-explicativo. Defina aqui o schema e model do mongoose de seu module, se tiver algum.

validators.js

Você diversas vezes vai precisar validar parâmetros de criação e edição de dados, além de algumas lógicas customizadas (Ex: não pode possuir mais de uma moto vermelha no sistema). É aqui que você vai criar essas validações. Elas rodam no formato de middleware do express, o que significa que a sua rota só vai chegar ao controller se passar no validator cadastrado.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].