Node.js, REST e OAuth: Guia Completo para APIs Modernas
Classificado em Computação
Escrito em em
português com um tamanho de 4,11 KB
O que é Node.js?
Node.js é um interpretador de JavaScript assíncrono, de código aberto e orientado a eventos. A principal característica e diferença de outras tecnologias é a execução das requisições/eventos em single-thread, onde apenas uma thread é responsável por executar o código JavaScript, sem a necessidade de criar uma nova thread.
Bloqueante (Blocking) vs. Não Bloqueante (Non-Blocking)
Sistemas Bloqueantes
Em um sistema bloqueante, as requisições seriam enfileiradas e processadas uma a uma. Dessa forma, não seria possível processar várias delas ao mesmo tempo. Ou seja, o cliente com a requisição mais nova só terá seu pedido processado depois que as requisições mais antigas tiverem sido processadas por inteiro.
String sql = "SELECT c FROM Cliente";
Query q = em.createQuery(sql);
List result = query.getResultList();Sistemas Não Bloqueantes
Em sistemas não-bloqueantes, a requisição do cliente mais novo poderá ser processada (ou pelo menos uma parte dela) antes que todas as requisições que o servidor recebeu antes dela sejam processadas.
var callback = function(err, rows) {
if(err) throw err;
console.log(rows);
};
con.query("SELECT * FROM Cliente", callback);Event Loop
Ao invés de threads, o Node.js utiliza um loop de eventos (Event Loop), aliviando o overhead da troca de contexto. Basicamente, ele é um loop infinito que, em cada iteração, verifica se existem novos eventos em sua fila. Programar orientado a eventos mantém sua aplicação mais robusta e estruturada para lidar com funções que são executadas de forma assíncrona e não-bloqueante.
O que é REST?
REST, sigla para Representational State Transfer, é um padrão arquitetural para a construção de web services que fazem uso unicamente do protocolo HTTP para a comunicação. Utiliza URLs como meio de comunicação e troca arquivos XML ou JSON (sendo o JSON o formato mais comum). Não utiliza um descritor de serviços, como ocorre com o WSDL no SOAP. Os serviços/recursos são representados por URLs.
O que é RestFY?
RestFY é um módulo Node.js construído especificamente para permitir a construção de serviços Web RESTful.
Criando a Primeira API RESTful / Web Server
Siga os passos para configurar o ambiente:
- Crie a pasta em um diretório, por exemplo:
unipbiblio. - Crie dentro da pasta o arquivo
package.json. - Preencha o
package.jsoncom informações básicas (name,description,author,version). - Execute dentro da pasta raiz o seguinte comando para instalar as dependências:
npm install.
Estrutura de Camadas da API RESTful
Uma API RESTful bem estruturada geralmente é dividida nas seguintes camadas:
- Factory: Contém a classe responsável pelo gerenciamento do banco de dados.
- Business: Contém as classes responsáveis pela regra de negócio dos serviços.
- Resources: Contém as classes responsáveis pelo direcionamento da requisição e resposta do recurso (o ponto de entrada da API).
OAuth 1 (Open Authorization)
O OAuth é um padrão aberto de autenticação e autorização que permite que usuários ou aplicações desenvolvidas por terceiros se conectem a um site ou serviço sem fornecer suas credenciais diretamente. No OAuth, existem três partes envolvidas:
- O proprietário do recurso (usuário final);
- O cliente (aplicação de terceiro);
- O servidor onde estão armazenados os recursos.
OAuth 2
O OAuth 2 é o principal avanço em delegação de identidade e se tornou um padrão essencial para a segurança de APIs, sendo amplamente utilizado por empresas líderes no mercado Web, como: Facebook, Google, LinkedIn e Microsoft.