Codifique sua primeira API com Node.js e Express: configure o servidor

Como configurar um servidor de API Express em Node.js

No tutorial anterior, aprendemos o que é a arquitetura REST, as seis restrições orientadoras do REST, como entender os métodos de solicitação HTTP e seus códigos de resposta e a anatomia de um endpoint de API RESTful.

Neste tutorial, vamos configurar um servidor para nossa API funcionar. Você pode criar uma API com qualquer linguagem de programação e software de servidor, mas usaremos o Node.js, que é a implementação de back-end do JavaScript, e o Express, uma estrutura mínima popular para Node.

Instalação

Nosso primeiro pré-requisito é garantir que o Node.js e o npm estejam instalados globalmente no computador. Podemos testar ambos usando o -v flag, que exibirá a versão. Abra seu prompt de comando e digite o seguinte.

Suas versões podem ser um pouco diferentes das minhas, mas desde que ambas estejam lá, podemos começar.

Vamos criar um diretório de projeto chamado express-api e mova-se para ele.

Agora que estamos em nosso novo diretório, podemos inicializar nosso projeto com o comando init.

Este comando solicitará que você responda a algumas perguntas sobre o projeto, que você pode optar por preencher ou não. Quando a configuração estiver concluída, você terá um pacote.json arquivo que se parece com isso:

Agora que temos nosso pacote.json, podemos instalar as dependências necessárias para nosso projeto. Felizmente, não exigimos muitas dependências, apenas essas quatro listadas abaixo.

  • body-parser: middleware de análise de corpo.

  • express: Um framework web minimalista que usaremos para nosso servidor.

  • mysql: Um driver MySQL.

  • request (opcional): Uma maneira simples de fazer chamadas HTTP.

Nós vamos usar o install comando seguido por cada dependência para terminar de configurar nosso projeto.

Isso criará um pacote-lock.json arquivo e um node_modules diretório e nosso pacote.json será atualizado para ficar assim:

Configurando um servidor HTTP

Antes de começarmos a configurar um servidor Express, configuraremos rapidamente um servidor HTTP com o recurso interno do Node http módulo, para ter uma ideia de como funciona um servidor simples.

Crie um arquivo chamado hello-server.js. Carregue no http módulo, defina um número de porta (eu escolhi 3001), e crie o servidor com o createServer() método.

No artigo introdutório do REST, discutimos o que são solicitações e respostas em relação a um servidor HTTP. Vamos configurar nosso servidor para lidar com uma solicitação e exibir a URL solicitada no lado do servidor e exibir um Olá, servidor! mensagem para o cliente no lado da resposta.

Por fim, informaremos ao servidor em qual porta escutar e exibiremos um erro, se houver.

Agora, podemos iniciar nosso servidor com node seguido pelo nome do arquivo.

Você verá esta resposta no terminal:

Para verificar se o servidor está realmente em execução, vá para https://localhost:3001/ na barra de endereços do seu navegador. Se tudo estiver funcionando corretamente, você deverá ver Olá, servidor! na página. No seu terminal, você também verá os URLs que foram solicitados.

Se você navegar para http://localhost:3001/hellovocê veria URL: /hello.

Também podemos usar cURL em nosso servidor local, que nos mostrará os cabeçalhos e o corpo exatos que estão sendo retornados.

Se você fechar a janela do terminal a qualquer momento, o servidor desaparecerá.

Agora que temos uma ideia de como o servidor, solicitação e resposta funcionam juntos, podemos reescrever isso no Express, que possui uma interface ainda mais simples e recursos estendidos.

Configurando um servidor expresso

Vamos criar um novo arquivo, app.js, que será o ponto de entrada para o nosso projeto atual. Assim como no servidor http original, precisaremos de um módulo e definiremos uma porta para iniciar.

Criar um app.js arquivo e coloque o seguinte código nele.

Agora, em vez de procurar todas as solicitações, declararemos explicitamente que estamos procurando uma GET pedido na raiz do servidor (/). Quando / receber uma solicitação, exibiremos a URL solicitada e a mensagem “Hello, Server!” mensagem.

Finalmente, iniciaremos o servidor na porta 3002 com o listen() método.

Podemos iniciar o servidor com node app.js como fizemos antes, mas também podemos modificar o scripts propriedade em nosso pacote.json arquivo para executar automaticamente este comando específico.

Agora podemos usar npm start para iniciar o servidor, e veremos nossa mensagem de servidor no terminal.

Se executarmos um curl -i no URL, veremos que ele é desenvolvido pelo Express agora e existem alguns cabeçalhos adicionais, como Content-Type.

Adicionar middleware de análise de corpo

Para lidar facilmente com POST e PUT solicitações à nossa API, adicionaremos middleware de análise de corpo. É aqui que nosso body-parser módulo entra. body-parser extrairá todo o corpo de uma solicitação recebida e a analisará em um objeto JSON com o qual podemos trabalhar.

Vamos simplesmente exigir o módulo no topo do nosso arquivo. Adicione o seguinte require declaração no topo do seu app.js Arquivo.

Em seguida, diremos ao nosso aplicativo Expresso para usar body-parsere procure por JSON.

Além disso, vamos alterar nossa mensagem para enviar um objeto JSON como resposta em vez de texto simples.

Segue nosso completo app.json arquivo como está agora.

Se você enviar um curl -i para o servidor, você verá que o cabeçalho agora retorna Content-Type: application/json; charset=utf-8.

Configurar rotas

Até agora, temos apenas um GET rota para a raiz (/), mas nossa API deve ser capaz de lidar com todos os quatro principais métodos de solicitação HTTP em vários URLs. Vamos configurar um roteador e fazer alguns dados falsos para exibir.

Vamos criar um novo diretório chamado rotase um arquivo dentro chamado route.js. Faremos um link para ele no topo de app.js.

Observe que o .js extensão não é necessária no require. Agora vamos mover o nosso aplicativo GET ouvinte de route.js. Digite o seguinte código em route.js.

Por fim, exporte o router para que possamos usá-lo em nosso app.js Arquivo.

Dentro app.jssubstitua o app.get() código que você tinha antes com uma chamada para routes():

Agora você deve ser capaz de ir para http://localhost:3002 e ver a mesma coisa que antes. (Não se esqueça de reiniciar o servidor!)

Quando tudo estiver configurado e funcionando corretamente, forneceremos alguns dados JSON com outra rota. Usaremos apenas dados falsos por enquanto, pois nosso banco de dados ainda não está configurado.

Vamos criar um users variável em route.jscom alguns dados de usuário falsos no formato JSON.

vamos adicionar outro GET rota para o nosso roteador, /userse enviar os dados do usuário.

Depois de reiniciar o servidor, agora você pode navegar para http://localhost:3002/users e veja todos os nossos dados exibidos.

Observação: se você não tiver uma extensão do visualizador JSON em seu navegador, é altamente recomendável fazer o download de uma, como JSONView for Chrome. Isso tornará os dados muito mais fáceis de ler!

Visite nosso GitHub Repo para ver o código completo para este post e compará-lo com o seu.

Conclusão

Neste tutorial, aprendemos como configurar um servidor HTTP integrado e um servidor Express em node, rotear solicitações e URLs e consumir dados JSON com solicitações get.

Na parte final da série RESTful API, conectaremos nosso servidor Express ao MySQL para criar, visualizar, atualizar e excluir usuários em um banco de dados, finalizando a funcionalidade de nossa API.

Deixe um comentário

O seu endereço de e-mail não será publicado.