Esta é uma API construída com Apollo Server e GraphQL persistindo dados no MongoDB. O intuito da aplicação foi ser minha porta de entrada nestas tecnologias, construindo um CRUD básico de usuários e postagens. Caso queira entender mais a fundo o funcionamento da API, convido-lhe a dar uma olhada na documentação do projeto.
-
NodeJS (Runtime JavaScript no servidor)
- Apollo Server (Servidor open-source compatível com GraphQL)
- GraphQL (Linguagem de query para API's)
- GraphQL-Markdown (Biblioteca para geração de documentação de uma API GraphQL)
-
MongoDB (Banco de dados open-source NoSQL)
- Mongoose (Biblioteca para manipular um banco de dados MongoDB)
O primeiro passo para a utilização da API em sua máquina é se certificar que possui o MongoDB e o NodeJS instalados em sua máquina. Após isto, clone o repositório e faça a instalação das dependências:
$ git clone https://github.com/RafaLopesMelo/GraphQL
$ npm install
//ou
$ yarn install
Após isto, crie um arquivo .env na raíz do projeto e coloque a URL do seu cluster MongoDB seguindo este formato:
DB_URL = *****
Por fim, abra o servidor com o comando:
$ npm run dev
// ou
$ yarn dev
Finalizado o processo, você poderá acessar o playground do GraphQL na URL https://localhost:4000
- Criação e manipulação de uma API GraphQL
- Geração de documentação de uma API GraphQL
- Aprendizado de utilização do Apollo Server
- Melhor manipulação de um banco de dados MongoDB com mongoose
Campo | Argumento | Tipo | Descrição |
---|---|---|---|
users | none | [User!]! | Retorna uma lista de usuários |
user | ID! | User! | Retorna um usuário especificado pelo ID |
posts | none | [Post!]! | Retorna uma lista de postagens |
post | ID! | Post! | Retorna uma postagem especificada pelo ID |
Campo | Argumento | Tipo | Descrição |
---|---|---|---|
createUser | UserInput! | User! | Cria um usuário no banco de dados |
updateUser | ID!, UserInput! | User! | Atualiza informações de um usuário especificado pelo ID no banco de dados |
deleteUser | ID! | Boolean | Deleta um usuário especificado pelo ID no banco de dados |
createPost | PostInput! | Post! | Cria um post no banco de dados |
updatePost | ID!, PostInput! | Post! | Atualiza informações de um post especificado pelo ID no banco de dados |
deletePost | ID! | Boolean | Deleta um post especificado pelo ID no banco de dados |
Campo | Argumento | Tipo | Descrição |
---|---|---|---|
_id | ID! | String contendo ID do usuário | |
firstName | String! | String contendo primeiro nome do usuário | |
lastName | String! | String contendo o último nome do usuário | |
fullName | String! | String contendo a contatenação de "first name" e "last name" | |
String | String contendo e-mail do usuário | ||
active | Boolean! | Booleano indicando se o usuário está ativo |
Campo | Argumento | Tipo | Descrição |
---|---|---|---|
_id | ID! | String contento o ID do post | |
title | String! | String contendo o título do post | |
content | String! | String contendo o conteúdo do post | |
author | User! | String contendo o usuário autor do post |
Campo | Tipo | Descrição |
---|---|---|
firstName | String! | String com valor de do primeiro nome do usuário |
lastName | String! | String com valor de do último nome do usuário |
String | String com e-mail do usuário | |
active | Boolean! | Boolean indicando se o usuário está ativo |
Campo | Tipo | Descrição |
---|---|---|
title | String! | String com o título do post |
content | String! | String com o conteúdo da postagem |
author | ID! | String com o ID do autor do post |