Skip to content

API em GraphQL utilizando Apollo Server, projeto voltado para aprendizado

Notifications You must be signed in to change notification settings

RafaLopesMelo/GraphQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ilustração GraphQL

🔥 Introdução

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.

🎸 Tecnologias usadas:

- Linguagem: JavaScript

  • 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)

💾 Começando

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

💻 Conhecimento Adquirido

  • 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

📄 Documentação

Índice

Query

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

Mutation

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

Objects

User

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"
email String String contendo e-mail do usuário
active Boolean! Booleano indicando se o usuário está ativo

Post

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

Inputs

UserInput

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
email String String com e-mail do usuário
active Boolean! Boolean indicando se o usuário está ativo

PostInput

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