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
- Focado em criação de serviços REST.
- Simples e rápido de trabalhar.
- Tem grandes empresas trabalhando e dando suporte a essa ferramenta.
- Restify usa o mesmo modelo de middleware que o express.
- Não tem features de arquivos estáticos concorrendo na evolução do framework.
- Uma comunidade razoável, em crescimento.
- 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.