https://a.storyblok.com/f/270183/35574/7829dc0e22/blog_node-js_apis_1200x600.png

5 maneiras de criar uma API em Node.js

Publicado em May 11, 2021

Tempo de leitura: 28 minutos

Este artigo vai te ajudar a criar uma pequena API de cinco maneiras diferentes, usando Node.js e quatro frameworks populares.

Express.js é uma das muitas estruturas HTTP disponíveis para o Node.js. Nós o utilizamos em muitos dos nossos conteúdos do Node.js , devido à grande variedade de complementos e à sua ampla comunidade de suporte.

As semelhanças na implementação da mesma funcionalidade em diferentes frameworks podem ajudar a esclarecer algumas questões ao implementar uma de nossas demonstrações em um framework diferente daquele apresentado no tutorial. Espero que sim.

Express.js

Vamos começar com o que já conhecemos. O Express.js é um framework leve e “neutro” para a criação de aplicativos web e móveis .

Criar um servidor

Crie um diretório de projeto usando seu IDE ou este comando.

mkdir rest-express cd rest-express

Crie um arquivo para seu aplicativo (geralmente app.js ou index.js).

touch index.js

Inicialize o projeto com o NPM gerando arquivos básicos de pacotes NPM sem precisar responder a nenhuma pergunta com a y opção.

npm init -y

Instale o pacote Express.js .

npm install express

Modifique index.js e adicione o seguinte código-fonte para criar seu aplicativo e a example rota.

// index.js

const express = require('express')

const app = express()
const port = process.env.PORT || 3000

app.get('/example', (req, res) => {
  res.json({ message: 'Looks good to me!' })
})

app.listen(port, () => {
  console.log(`listening on port ${port}`)
})

Executar o servidor

Inicie o aplicativo usando a node linha de comando. Talvez você esteja acostumado a npm start que, em muitos casos, simplesmente executa esse comando no arquivo do seu aplicativo de qualquer maneira.

node index.js

Agora você pode fazer uma solicitação usando o Postman para ver a resposta.

Screenshot of making a request to the Express.js example API using Postman

Bibliotecas padrão do Node.js

O Node.js possui pacotes integrados capazes de escutar solicitações HTTP e construir respostas. As outras estruturas simplificam esse processo, além de oferecerem diversos outros recursos que, de outra forma, você teria que desenvolver.

Criar um servidor

Crie um diretório de projeto usando seu IDE ou este comando.

mkdir rest-node-only cd rest-node-only

Crie um arquivo para seu aplicativo (geralmente app.js ou index.js).

touch index.js

Não precisamos inicializar o NPM até o momento em que precisarmos instalar pacotes. Para este exemplo, usaremos pacotes integrados ao Node.js , então não precisamos do NPM nem de nenhum arquivo de pacote (🎉🎉🎉 E SEM node_modules DIRETÓRIO 🎉🎉🎉).

Modifique index.js e adicione o seguinte código-fonte para criar seu aplicativo e a example rota.

// index.js

const http = require('http')

const port = process.env.PORT || 3000

const requestHandler = (req, res) => {
  if (req.url === '/example'  && req.method === 'GET') {
    res.writeHead(200, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ message: 'Node.js only: Looks good to me!' }))
  } else {
    res.writeHead(404, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ message: 'Not found!' }))
  }
}

const server = http.createServer(requestHandler)

server.listen(port, () => {
  console.log(`listening on port ${port}`)
})

Executar o servidor

Inicie o aplicativo usando a node linha de comando.

node index.js

Agora você pode fazer uma solicitação usando o Postman para ver a resposta.

Screenshot of making a request to the Node.js example API using Postman

Koa.js

Koa.js, desenvolvido pelos mesmos desenvolvedores responsáveis pelo Express.js, foi criado para ser mais leve e expressivo, permitindo um código mais conciso e melhorando significativamente o tratamento de erros. Por isso, ele vem com menos recursos integrados e um amplo conjunto de extensões da comunidade.

Criar um servidor

Crie um diretório de projeto usando seu IDE ou este comando.

mkdir rest-koa cd rest-koa

Crie um arquivo para seu aplicativo (geralmente app.js ou index.js).

touch index.js

Inicialize o projeto com o NPM gerando arquivos básicos de pacotes NPM sem precisar responder a nenhuma pergunta com a y opção.

npm init -y

Instalar Koa.js e os pacotes de suporte para roteamento e envio de respostas JSON. Observação: O Koa não oferece suporte a roteamento (além das condições de URL) nem a respostas JSON sem um pacote adicional.

npm install koa @koa/router koa-json

Modifique index.js e adicione o seguinte código-fonte para criar seu aplicativo e a example rota.

// index.js

const Koa = require('koa')
const Router = require('@koa/router')
const json = require('koa-json')

const app = new Koa()
const router = new Router()
const port = process.env.PORT || 3000

app
  .use(router.routes())
  .use(router.allowedMethods())
  .use(json({ pretty: false }))

router.get('/example', (ctx) => {
  ctx.body = { message: 'Koa.js: Looks good to me!' }
})

app.listen(3000)

Executar o servidor

Inicie o aplicativo usando a node linha de comando.

node index.js

Agora você pode fazer uma solicitação usando o Postman para ver a resposta.

Screenshot of making a request to the Koa.js example API using Postman

Restify

Restify é um framework do Node.js otimizado para a criação de serviços web RESTful semanticamente corretos, prontos para uso em produção em grande escala.

Criar um servidor

Crie um diretório de projeto usando seu IDE ou este comando.

mkdir rest-restify cd rest-restify

Crie um arquivo para seu aplicativo (geralmente app.js ou index.js).

touch index.js

Inicialize o projeto com o NPM gerando arquivos básicos de pacotes NPM sem precisar responder a nenhuma pergunta com a y opção.

npm init -y

Instale o pacote .

npm install restify

Modifique index.js e adicione o seguinte código-fonte para criar seu aplicativo e a example rota.

// index.js

var restify = require('restify')

const port = process.env.PORT || 3000
var server = restify.createServer()

server.get('/example', (req, res, next) => {
  res.json({ message: 'Restify: Looks good to me!' })
  next()
})

server.listen(port, function() {
  console.log(`listening on port ${port}`)
})

Executar o servidor

Inicie o aplicativo usando a node linha de comando.

node index.js

Agora você pode fazer uma solicitação usando o Postman para ver a resposta.

Screenshot of making a request to the Restify example API using Postman

Hapi

hapi é uma estrutura extremamente escalável e robusta para Node.js. Desenvolvido inicialmente para lidar com o tráfego em grande escala da Black Friday do Walmart, o hapi continua sendo a escolha comprovada para necessidades de back-end de nível empresarial.

Criar um servidor

Crie um diretório de projeto usando seu IDE ou este comando.

mkdir rest-hapi cd rest-hapi

Crie um arquivo para seu aplicativo (geralmente app.js ou index.js).

touch index.js

Inicialize o projeto com o NPM gerando arquivos básicos de pacotes NPM sem precisar responder a nenhuma pergunta com a y opção.

npm init -y

Instale o pacote .

npm install @hapi/hapi

Modifique index.js e adicione o seguinte código-fonte para criar seu aplicativo e a example rota.

// index.js

const Hapi = require('@hapi/hapi')

const port = process.env.PORT || 3000

const init = async () => {
  const server = Hapi.server({
    port: port,
    host: 'localhost'
  })

  server.route({
    method: 'GET',
    path: '/example',
    handler: (req, h) => {
      return { message: 'hapi: Looks good to me!' }
    }
  })

  await server.start()
  console.log('Server running on %s', server.info.uri)
}

init()

Executar o servidor

Inicie o aplicativo usando a node linha de comando.

node index.js

Agora você pode fazer uma solicitação usando o Postman para ver a resposta.

Screenshot of making a request to the hapi example API using Postman

Conclusão

O Node.js pode ser usado na sua forma mais básica, mas você paga o preço por ter que implementar suas próprias soluções para recursos como roteamento e tipos de resposta. Sua aplicação será rápida, com poucos pacotes desnecessários, se você souber como otimizar melhor seu código para obter melhor desempenho. Você pode encontrar soluções de código aberto para roteamento e outros recursos, sem usar uma estrutura como as mencionadas aqui, mas, nesse caso, já vale a pena usar uma estrutura.

Enquanto o Express.js não impõe uma abordagem específica, ele possui muitos recursos integrados. Não é o mais rápido, mas isso não significa que seja lento. É certamente o mais fácil de começar a usar.

O Restify foi desenvolvido especificamente para escalar Applications RESTful e, apesar de sua simplicidade, é utilizado em alguns dos maiores implantações do Node.js do mundo.

hapi foi desenvolvido para escalar rapidamente, ao mesmo tempo em que oferece um conjunto completo de recursos e está pronto para uso corporativo.

Koa.js é uma alternativa compatível com assíncrono ao Express.js, sem os recursos integrados.

Muitos desenvolvedores vão escolher aquele com o melhor suporte ou a maior comunidade, o que, para mim, é uma escolha óbvia entre hapi e Express.js.

Todo o código

Você pode encontrar um único repositório com todo o código no GitHub, caso tenha alguma dificuldade com os exemplos apresentados aqui.

Leitura complementar

Compartilhar:

https://a.storyblok.com/f/270183/250x250/451101b4f0/lukeoliff.png
Luke OliffEx-funcionários da Vonage

Educador de tecnologia com um jeito amigável, pai de família, defensor da diversidade, provavelmente discuto um pouco demais. Ex-engenheiro de backend. Fale comigo sobre JavaScript (front-end ou back-end), o incrível Vue.js, DevOps, DevSecOps e tudo relacionado ao JamStack. Escritor no DEV.to