Back-End

22 mar, 2018

Restify: uma opção ao Express

Publicidade

Estou sempre em busca de novas ferramentas para desenvolvimento web do lado do servidor usando Node.js. Acredito que hoje o mais usado e conhecido no mercado é o Express. O Express oferece um conjunto robusto de recursos para sua aplicação e encontramos muito conteúdo na internet sobre o assunto. Mas nem sempre precisamos de tantos recursos.

Em alguns casos, precisamos de uma ferramenta simples e focada em resolver um determinado problema de negócio. O Restify foi criado pensando nisso. Um framework simples focado em criação de serviços Rest. Agora vamos entender um pouco melhor sobre essa ferramenta, quais as vantagens e se esse framework é ideal para seu projeto.

 

O que é o Restify?

Como os próprios desenvolvedores descrevem, Restify é um framework web feito em Node.js, focado em desenvolvimento de API Rest rápido, flexível e tão fácil de usar quanto seu concorrente, Express. Tem uma estrutura que se preocupa com a semântica de uma API Rest e está pronto para ser usado em alta escala em produção.

Conta com grandes empresas por trás que utilizam o framework como: Netflix, Napster, Pinterest, joyent e outras.

Restify é uma ferramenta muito simples de ser utilizada, para quem está acostumado a usar Express, será uma adaptação muito rápida e tranquila. Configuração, instalação e estruturar um projeto é praticamente igual e ainda suporta middleware, mantendo todas as vantagens já conhecidas pelo Express.

Vantagens

  1. Focado em criação de serviços REST.
  2. Simples e rápido de trabalhar.
  3. Tem grandes empresas trabalhando e dando suporte a essa ferramenta.
  4. Restify usa o mesmo modelo de middleware que o express.
  5. Não tem features de arquivos estáticos concorrendo na evolução do framework.
  6. Uma comunidade razoável, em crescimento.
  7. Fácil mudança para Express, se for preciso.

Comparação Express vs Restify

Selecionei algumas características que comentei como vantagens para fazer uma comparação entre os dois frameworks. O objetivo é apresentar a diferença entre as duas ferramentas.

1. Código semelhante

A seguir vou apresentar a semelhança de código para iniciar de forma simples um servidor que escuta na porta 3000. Note como é semelhante o código.

Express

var express = require('express');

var app = express();

app.get('/', function (req, res) {

  res.send('Olá Mundo'');

});

app.listen(3000, function() {

  console.log('Escutando na porta 3000');

});

Restify

var restify = require('restify');

var app = restify.createServer();

app.get('/', function (req, res, next) {

  res.send('Olá Mundo');

});

app.listen(3000, function() {

  console.log('Escutando na porta 3000');

});

2. Middleware/Plugin

Frameworks server-side usam middleware de formas diferentes. Alguns usam objetos, outros funções. Express e Restify usam middleware da mesma forma.

app.use(function (req, res, next) {

  // Algum código

  next();

});

3. Manipulação de Erros

No Restify, quando um objeto de erro é passado para uma função next(), um evento é emitido no objeto do servidor. Um objeto de erro é qualquer objeto que passa por uma instanceof Error.

O interessante é que antes de enviar o erro ao cliente, o servidor disparará um evento usando o nome do erro, sem a parte Error do nome. Exemplo: InternalServerError, o servidor emitirá um InternalServer. Um exemplo de como manipular erros em restify.

var errs = require('restify-errors');

server.get('/', function(req, res, next) {

    return next(new errs.InternalServerError('boom!'));

});

server.on('InternalServer', function(req, res, err, callback) {

  // Algum código para capturar métricas ou logs

  return callback();

});

Nesse exemplo, usei um módulo restify-errors para facilitar a criação de objetos de erro. Observe que o callback do InternalServer recebe quatro parâmetros: objeto request, objeto response, objeto error e uma função callback, essa função é necessária para completar o processo e fazer o servidor enviar uma resposta ao client.

4. Sistema de view

O Restify foi criado para focar em desenvolvimento de aplicações Rest. Ele não tem um sistema de view como o Express, onde você pode habilitar um engine de templates de arquivos estáticos.

Como usar

Primeiro crie um diretório com nome do projeto e depois execute npm init para gerar o package.json. Para instalar o Restify no projeto, execute o comando:

# npm install restify

Para rodar o serviço rápido e fácil, crie um arquivo app.js e escreva o seguinte código:

var restify = require('restify');

var server = restify.createServer();


server.get('/hello/:name', function(req, res, next) {

  res.send('hello ' + req.params.name);

});

server.listen(3000, function() {

  console.log('%s listening at %s', server.name, server.url);

});

Nesse código importamos o modulo restify e criamos um objeto server. Depois definimos uma rota /hello/:name que vai receber um parâmetro e vai retornar ao client a palavra hello mais o parâmetro passado.

Depois execute o comando:

# node app.js

Com o servidor rodando, você pode ver o resultado pelo endereço http://localhost:3000/hello/world, ele vai retornar hello world no corpo da requisição.

Empresas quem usa Restify:

Conclusão

No momento que escrevo esse artigo, lançaram a versão v7.0.0, mudando completamente o sistema de router e middleware da ferramenta, trazendo melhorias significativas de desempenho. Mais informações sobre as novas features no link a seguir:

Nesse artigo falei um pouco sobre as características do Restify e comparei com o Express que já é conhecido no mercado. A ideia desse artigo é apresentar um pouco sobre a ferramenta e os recursos que ela oferece. É interessante saber outras opções de ferramenta no mercado.

Quando planejamos um projeto, é importante escolhermos o framework ideal que vai ajudar seu trabalho de forma simples e rápida. Escolher uma ferramenta bem documentada e com curta curva de aprendizado faz você gastar menos tempo resolvendo problemas triviais e mais tempo trabalhando em problemas críticos.

Deixe seu comentário falando o que achou ou contando suas experiência com o Restify. O feedback de vocês é importante e vai me motivar a escrever mais sobre JavaScript e Node.js. Obrigado.

Referências