O mundo além do Express.js — Conheça o Restify

Diego Martins de Pinho
Code Prestige
Published in
4 min readMar 26, 2018

Vou começar fazendo um exercício de adivinhação: Qual a primeira coisa que vem a sua mente quando eu digo Node.js e API REST? Se você não pensou logo de cara no Express, tenho certeza de que pelo menos você o conhece. Neste artigo quero te mostrar o Restify, uma biblioteca que nasceu como uma alternativa ao Express para desenvolvimento exclusivo de APIs REST.

Versão em Vídeo

Além das instruções que daremos abaixo, você também pode acompanhar todos os passos que serão feitos na versão em vídeo!

Se gostou, se inscreva no nosso canal para receber as novidades!

Conheça o Restify

De acordo com o próprio site oficial, o Restify é uma estrutura de serviço Node.js otimizada para construir serviços Web RESTful semanticamente corretos. Ele é otimizado para introspecção e desempenho, e já é utilizado em grande escala por empresas como Netflix, Napster, Pinterest, Joyent e npm. Sua sintaxe e funcionamento é muito semelhante ao Express, sendo assim, sua adaptação é muito fluída, como veremos a seguir.

Primeira aplicação com Restify

Para entender como ele funciona, vamos fazer um exemplo prático. Primeiramente, crie um projeto Node com o comando npm init e então importe a biblioteca com o comando:

npm install restify --save

Feito isto, vamos criar nossa API no arquivo index.js (padrão do npm init). O primeiro passo é importar a biblioteca:

const restify = require('restify');

De forma análoga do Express, instanciamos um servidor utilizando o método createServer :

const server = restify.createServer();

Feito isso, já podemos implementar o nosso primeiro endpoint. Vamos fazer algo simples, devolveremos um JSON com uma mensagem de “Hello World”. Para isso, devemos fazer o mapeamento do caminho que gostaríamos que devolvesse esta resposta. Utilizaremos o / (barra):

server.get('/', (req, res) => {
res.send({mensagem:"Hello World"});
});

Agora só precisamos definir a porta que desejamos para a aplicação:

server.listen(3000, () => {
console.log("Servidor em pé");
});

Defina o start no package.json e suba aplicação. Acesse o http:://localhost:3000 no seu navegador e veja o JSON que definimos!

Resposta da API feita com o Restify

Bem fácil, não é? Agora vamos um exemplo mais completo.

Utilizando Middlewares e outros recursos

Com o Restify conseguimos interpretar facilmente os parâmetros passados na requisição. Por exemplo, vamos pegar o nome passado na requisição e devolvê-lo no JSON.

const restify = require('restify');const server = restify.createServer();
server.get('/mensagem/:nome', (req, res) => {
res.send({mensagem:`Hello World, ${req.params.nome}`});
});
server.listen(3000, () => {
console.log("Servidor em pé!");
});

Ao utilizar com o meu nome, por exemplo, temos o seguinte:

Resposta da API utilizando o parâmetro enviado

Aproveitando este mesmo exemplo, podemos utilizar a estrutura de Middlewares para refatorá-lo:

const restify = require('restify');function resposta(req, res, next) {
res.send({mensagem:`Hello World, ${req.params.nome}`});
next();
}
const server = restify.createServer();
server.get('/mensagem/:nome', resposta);
server.listen(3000, () => {
console.log("Servidor em pé!");
});

Poderíamos utilizar esta mesma lógica para fazer validações ou tratamentos através de um encadeamento de funções, como por exemplo neste caso vou validar se o nome está sendo enviado:

const restify = require('restify');function temNome(req, res, next) {
if(req.params.nome) { next(); }
else res.send('Inválido')
}
function resposta(req, res, next) {
res.send({mensagem:`Hello World, ${req.params.nome}`});
next();
}
const server = restify.createServer();
server.get('/mensagem/:nome', temNome, resposta);
server.listen(3000, () => {
console.log("Servidor em pé!");
});

Agora se chamamos o endpoint sem o parâmetro, recebemos a mensagem de erro:

Erro ao omitir o parâmetro de nome esperado

Bem fácil, não é mesmo?

Este é só o começo

Estas são apenas algumas das funcionalidades do Restify. Ele é bem parecido com o Express, mas é focado exclusivamente em APIs REST. Isso significa que aqui você não conseguirá servir arquivos estáticos nativamente, por exemplo. Nesta página, há toda a documentação das funcionalidades, desde roteamento, gerenciamento de erros, segurança até versionamento de rotas e afins.

Talvez você não veja muito motivo para sair do conforto do Express, mas é importante saber que existem alternativas. Para APIs Rest, toda a parte de render e templates do Express é um peso desnecessário. Mas além do Restify, há outras bibliotecas fantásticas como o hapi e o LoopBack.

Estude as opções e escolha o que melhor para seu projeto :)

PS: Se você gosta de benchmarks, há um bem interessante neste link com todas as bibliotecas citadas neste artigo!

Referências

Gostou? Recomende 👏 este artigo e acompanhe nossa publicação para não perder os próximos conteúdos!

Siga nossa publicação e não perca os próximos artigos! http://www.codeprestige.com.brFacebook, Twitter, Youtube

Siga o autor deste artigo e troque uma ideia com ele! http://www.diegopinho.com.br • Twitter, LinkedIn

Aprenda mais com nossos cursos de programação online!

ECMAScript 6ECMAScript 7 e 8React 16VS CodeMais

--

--

Diego Martins de Pinho
Code Prestige

Professor de tecnologia, desenvolvedor de software e escritor