Back-End

4 abr, 2019

Construindo uma API GraphQL com Node.js

Publicidade

Dando continuidade aos meus artigos anteriores: “Introdução ao GraphQL“ e “Construindo uma API GraphQL com ASP .NET Core e Entity Framework Core”, hoje eu vou mostrar como dar os primeiros passos com Node.js e GraphQL construindo uma API do zero com eles.

O primeiro passo será criar um novo projeto. Para isso, escolha um novo diretório no seu computador, abra um terminal, navegue até esse diretório e execute o comando abaixo:

npm init -y

O resultado desse comando será um arquivo chamado package.json com as informações default do seu projeto, como: nome, versão, etc.

O próximo passo será importar os pacotes do portal NPM para o nosso projeto. Ainda com o seu terminal aberto e dentro do diretório que você executou no passo anterior, execute o comando abaixo:

npm install express graphql express-graphql  --save

Esse comando deve criar um novo diretório na sua estrutura, chamado nome_modules com os pacotes que acabamos de importar no nosso projeto.

Agora vamos criar um novo arquivo para criarmos as nossas rotas. Para este artigo eu irei criar um chamado app.js, mas você pode escolher um outro nome de sua preferência. Abra esse arquivo em um editor de textos e atualize ele com o trecho de código abaixo:

var express = require('express');
var express_graphql = require('express-graphql');
var { buildSchema } = require('graphql');

// Schema
var schema = buildSchema(`
    type Query {
        message: String
    }
`);
// Mapeamento
var root = {
    message: () => 'Hello World!'
};


var app = express();
app.use('/graphql', express_graphql({
    schema: schema,
    rootValue: root,
    graphiql: true
}));
app.listen(3000, () => console.log('Express GraphQL Server Now Running On localhost:3000/graphql'));

Analisando o trecho de código acima, nós temos:

  • 01 até a 03: estamos importando os pacotes express e graphql
  • 04 até a 09: estamos criando um simples GraphQL schema
  • 10 até a 13: estamos criando um root resolver – ele contém o mapeamento do retorno do nosso buildSchema
  • 15 até a 21: estamos criando um server com uma rota para graphql. Nessa parte nós temos três pontos importantes:

mapeamento dos nossos schemas.

os nossos mapeamentos.

graphqliql (quando essa flag está como true, nós habilitamos o modo interativo do GraphQL no browser).

Agora execute o comando node + (nome que você escolheu para o seu arquivo index), no meu cenário ficou node app.js.

Resultado:

Node and GraphQL

Bem simples, né?

Esse foi o primeiro artigo de uma serie que eu irei criar sobre esse tema. Caso tenha interesse em clonar o projeto desenvolvido aqui, acesse-o no meu GitHub: node-graphql

Referências