Como Criar uma API com GraphQL: Guia Completo para Iniciantes
Criar uma API pode parecer algo complicado. Mas com GraphQL, esse processo fica mais claro e flexível. Neste artigo, vamos explicar como criar uma API com GraphQL de maneira simples e passo a passo. Mesmo que você nunca tenha criado uma API antes, este guia foi feito para você.
O que é uma API?
Antes de tudo, vamos entender o que é uma API.
API significa Application Programming Interface (Interface de Programação de Aplicações). É um conjunto de regras que permite que programas diferentes se comuniquem.
Por exemplo:
- Um aplicativo de clima usa uma API para buscar os dados do tempo.
- Um site de loja virtual usa uma API para mostrar produtos, preços e fazer pedidos.
APIs são como “garçons” digitais. Você faz um pedido (requisição) e ela te traz o que você quer (resposta).
Diferença entre REST e GraphQL
Antes de usar GraphQL, é importante entender a diferença entre os dois principais estilos de API: REST e GraphQL.
Característica | REST | GraphQL |
---|---|---|
Tipo de requisição | Vários endpoints (URLs) | Um único endpoint |
Retorno de dados | Fixos por rota | Personalizáveis por requisição |
Eficiência em dados | Pode trazer dados demais | Traz só o que você pedir |
Documentação | Separada ou com Swagger | Integrada automaticamente |
Com GraphQL, você tem mais controle sobre os dados. Isso ajuda a evitar excesso ou falta de informações.
O que é o GraphQL?
GraphQL é uma linguagem de consulta para APIs. Ela foi criada pelo Facebook em 2012 e liberada em 2015.
Com ela, você faz uma única requisição e recebe exatamente os dados que precisa. Nada mais, nada menos.
Por exemplo, se você quer apenas o nome de um usuário, você pede só isso. Em REST, você poderia acabar recebendo também o e-mail, a idade e outros dados.
Vantagens do GraphQL
Algumas das principais vantagens são:
- Requisições otimizadas: Traz apenas os dados solicitados
- Endpoint único: Menos complexidade no backend
- Alto desempenho: Menos dados trafegando na rede
- Facilidade para front-end: O cliente decide o que quer ver
- Ferramentas robustas: Como o GraphiQL e Apollo
Ferramentas que vamos usar
Para criar nossa API com GraphQL, vamos usar:
- Node.js: ambiente de execução JavaScript no backend
- Express: framework para servidor HTTP
- GraphQL: biblioteca principal da linguagem
- Apollo Server: biblioteca que facilita a criação da API
Como criar uma API com GraphQL: passo a passo
1. Instale o Node.js
Acesse o site oficial:
https://nodejs.org/
Baixe e instale a versão recomendada.
Para confirmar que deu certo:
node -v
npm -v
2. Crie uma pasta para seu projeto
mkdir minha-api-graphql
cd minha-api-graphql
3. Inicie o projeto
npm init -y
4. Instale as dependências
npm install express apollo-server-express graphql
5. Crie o arquivo principal
Crie um arquivo chamado index.js
:
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const typeDefs = gql`
type Query {
saudacao: String
}
`;
const resolvers = {
Query: {
saudacao: () => 'Olá, mundo GraphQL!'
}
};
async function startServer() {
const app = express();
const server = new ApolloServer({ typeDefs, resolvers });
await server.start();
server.applyMiddleware({ app });
app.listen(4000, () => {
console.log('Servidor rodando em http://localhost:4000/graphql');
});
}
startServer();
6. Execute a API
node index.js
Abra seu navegador e acesse:
http://localhost:4000/graphql
Você verá a interface para testar consultas.
Experimente digitar:
{
saudacao
}
Você receberá:
{
"data": {
"saudacao": "Olá, mundo GraphQL!"
}
}
Entendendo os componentes do GraphQL
Schema
É o “mapa” da sua API. Define os tipos de dados e o que pode ser consultado.
TypeDefs
Definem os tipos. Por exemplo:
type Usuario {
id: ID
nome: String
email: String
}
Resolvers
São as funções que dizem como obter os dados.
Query
Permite buscar dados.
Mutation
Permite alterar dados: criar, editar ou deletar.
Exemplo:
type Mutation {
criarUsuario(nome: String!, email: String!): Usuario
}
Exemplo prático: lista de usuários
Vamos melhorar nosso código com uma lista de usuários.
Atualize os typeDefs:
const typeDefs = gql`
type Usuario {
id: ID
nome: String
email: String
}
type Query {
usuarios: [Usuario]
}
`;
Adicione uma lista falsa de dados:
const usuarios = [
{ id: 1, nome: 'Ana', email: 'ana@email.com' },
{ id: 2, nome: 'Carlos', email: 'carlos@email.com' },
];
Atualize os resolvers:
const resolvers = {
Query: {
usuarios: () => usuarios
}
};
Teste no navegador:
{
usuarios {
nome
email
}
}
Resultado:
{
"data": {
"usuarios": [
{
"nome": "Ana",
"email": "ana@email.com"
},
{
"nome": "Carlos",
"email": "carlos@email.com"
}
]
}
}
Como criar uma Mutation (inserir dados)
Vamos adicionar uma forma de criar um novo usuário.
Atualize os typeDefs:
const typeDefs = gql`
type Usuario {
id: ID
nome: String
email: String
}
type Query {
usuarios: [Usuario]
}
type Mutation {
criarUsuario(nome: String!, email: String!): Usuario
}
`;
Atualize os resolvers:
const resolvers = {
Query: {
usuarios: () => usuarios
},
Mutation: {
criarUsuario: (_, { nome, email }) => {
const novoUsuario = {
id: usuarios.length + 1,
nome,
email
};
usuarios.push(novoUsuario);
return novoUsuario;
}
}
};
Teste a mutation:
mutation {
criarUsuario(nome: "Joana", email: "joana@email.com") {
id
nome
}
}
Recursos gratuitos para aprender mais
Conclusão
Agora você já sabe como criar uma API com GraphQL! Vimos os conceitos básicos, fizemos uma API simples e aprendemos a consultar e criar dados.
GraphQL é uma tecnologia poderosa e flexível. Mesmo que você esteja começando agora, ela é uma ótima escolha para aprender e usar em projetos modernos.
Lembre-se: a prática é a melhor forma de aprender. Teste, explore e construa suas próprias APIs com criatividade!