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:

  1. Crie a pasta em um diretório, por exemplo: unipbiblio.
  2. Crie dentro da pasta o arquivo package.json.
  3. Preencha o package.json com informações básicas (name, description, author, version).
  4. 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.

Entradas relacionadas: