Aplicação desenvolvida com NodeJs, Express e MongoDB para dispolibilizar uma RESTful API, além de integrar o GraphQL para fornecer uma camada adicional de consulta flexível e eficiente.
Data de criação: Apr 4, 2024
Este projeto apresenta um aplicativo construído com Node.js, Express e MongoDB, proporcionando uma API RESTful para interagir com os dados. Além disso, ele incorpora o GraphQL para oferecer uma alternativa poderosa de consulta de dados.
GraphQL vem como uma alternativa para resolver 2 problemas de Rest APIS, que é o caso de Over-fetching e Under-fetching.
Note
- Over-fetching: Este problema ocorre quando a API retorna mais dados do que o necessário para uma determinada solicitação.
- Under-fetching: Este problema acontece quando uma solicitação não fornece informações suficientes, levando o cliente a fazer várias solicitações adicionais para obter os dados necessários.
- 🗃️ Padrão Layered Architecture
- 🐙 Criar usuário
- 🔑 Autenticação - JWT
- 👾 Informações do Usuário
- 🕸️ GraphQL
- Query
- ✅ Informações do Usuário
- Mutation
- ✅ Atualizar Informações do Usuário
- Query
- ⚡ Dependencies:
- @apollo/server
4.10.2
- bcrypt
5.1.1
- cors
2.8.5
- express
4.19.2
- graphql
16.8.1
- jsonwebtoken
9.0.2
- mongoose
8.2.4
- @apollo/server
Note
Siga os passos abaixo para a execução do projeto.
# Clone
$ git clone https://github.com/EricNeves/quickstartGraphQL.git
# Project Folder
$ cd quickstartGraphQL
# Install Deps
$ cd www && pnpm install
# Execute Docker - ./quickstartGraphQL
$ docker-compose up -d --build
$ curl -X POST \
-d '{ "name": "admin", "email": "[email protected]", "password": "admin" }' \
-H "Content-Type: application/json" \
http://localhost:3030/users
{
"id": "660ebf9dc1f55ee8a836f218",
"name": "admin",
"email": "[email protected]",
}
$ curl -X POST \
-d '{ "email": "[email protected]", "password": "admin" }' \
-H "Content-Type: application/json" \
http://localhost:3030/users/login
{
"jwt": "your-token"
}
query {
getUser {
id,
name
}
}
Header: Authorization (JWT)
mutation {
updateUser(input: { name: "...", email: "..." }) {
id
}
}
Header: Authorization (JWT)
Eric Neves |
👋 Me chamo Eric Neves, sou desenvolvedor web com foco em backend e autor deste projeto. |