API Restful: conceito, princípios e como criar

API Restful: conceito, princípios e como criar

quinta-feira, 7 de novembro de 2019 | Comentários

Escrito por

Você sabe o que é API? Essas três letras formam a sigla para Application Programming Interface, que pode ser traduzido como “Interface de Programação de Aplicações”.

De maneira simplificada, podemos dizer que as API são conjuntos de instruções e padrões de programação que servem para fornecer dados e informações relevantes de uma determinada aplicação.

Dentro do universo das APIs existe um padrão conhecido como RESTful. No post de hoje, vamos falar sobre as API Restful e entender um pouco mais sobre eles, seus conceitos, princípios e formas de criação. Boa leitura!

Afinal, para que servem as APIs?

As APIs estão presente na maioria das aplicações e sistemas inteligentes que utilizamos, sejam eles focados em B2B ou em recursos do dia a dia, como o uso do app de navegação. Grande parte das APIs são criadas para integração entre um software de uma empresa e produtos associados. Um bom exemplo são os sistemas de gerenciamento de hotéis.

Eles possuem APIs para que dados de outros sistemas (como o responsável pelas reservas online ou a distribuição das diárias nos canais de venda) integrem as informações com o sistema de gestão, ampliando a precisão da base de dados e o volume de informações.

As APIs utilizam uma rede para o tráfego de informações, de uma forma padronizada. Isso pode ser através da internet ou de uma rede local.

Um bom exemplo é o Google Maps. Muitos sites e aplicações com foco em geoprocessamento possuem APIs para captar dados do Maps. Elas os adaptam para conseguir as informações necessárias e exibir pontos de interesse dentro de um serviço, como se fizesse parte da arquitetura do site ou da aplicação.

Quais são os formatos de API?

Existem três formas de API:

  1. Local;
  2. Baseada em programa;
  3. Baseada em web.

A API RESTful, nosso foco de hoje, é uma API em web, baseada em protocolo HTTP, um formato que vem se tornando padrão de uso conforme vivenciamos o aumento de soluções digitais hospedadas em nuvem. Mas além dele, outros padrões e abordagens estão sendo utilizados com mais frequência, como gRPC e GraphQL.

Quer um exemplo de como as APIs são variadas e podem até mesmo ser divertidas? Existe uma para auxiliar na construção de sites que é capaz de preencher todos os espaços de foto e links para facilitar a visualização do projeto. A grande questão é que ele preenche TODOS os espaços com fotos e links para fotos do ator Nicolas Cage.

Parece bobo, não é? Mas a ideia é facilitar a vida do desenvolvedor de modo divertido, auxiliando a enxergar o tamanho das imagens e os links de forma rápida.

O que são as APIs RESTful?

API RESTful é uma interface que fornece dados em um formato padronizado baseado em requisições HTTP.

Por exemplo: A API do Facebook, que permite que você se autentique em aplicações externas ao Facebook (como o login da PlayStation Network, que é requisitada aos jogadores do PlayStation 4). Ela fornece dados do Facebook para essas aplicações, facilitando o cadastro e o acesso.

API RESTful fica parada até que acontece uma requisição. É como um carro estacionado que só é ativado após a ignição com a chave. No caso do exemplo do login da PSN usando os dados do Facebook, a API do Facebook não fica processando os dados de todos os seus usuários continuamente, ela espera até que um usuário peça a permissão para se autenticar.

As APIs Restful aumentam a performance para situações de concorrência, ou seja, quando muitas pessoas estão pedindo a mesma coisa ao mesmo tempo. Elas utilizam verbos para definir qual é a finalidade da requisição que está sendo enviada. Os verbos são:

  • GET: A requisição é um pedido de dados para a API. A API vai buscar os dados solicitados em algum banco e, provavelmente, vai retornar em formato JSON (formato de notação de objeto JavaScript);
  • POST: Tipo de requisição utilizada para criar um recurso em uma determinada API. São chamados de recursos o objeto que está sendo tratado naquela API.
  • PUT: Requisição utilizada para atualizar o recurso indicado com alguma informação.
  • PATCH: Requisição feita para atualização de somente uma parte de um recurso.
  • DELETE: Requisição para excluir um dado.

Essas operações são acessadas por meio de Endpoints, que são as URLs nas quais são feitas as requisições. Cada requisição aos endpoints é composta por:

  1. O método HTTP;
  2. Um cabeçalho requisição, que pode conter informações como dados de autenticação da API, dados de origem da requisição e formato do retorno.

Embora o corpo da requisição e do retorno possam utilizar outros formatos, de modo geral é utilizado o formato JSON como padrão, tanto para o envio quanto para o retorno das requisições. Esse formato é escolhido, principalmente, por sua compatibilidade simples entre as linguagens e frameworks existentes, tanto de backend quanto de frontend.

Exemplos de requisições das APIs

Considerando que temos um recurso chamado Person, com os atributos id, name e age, e que temos um domínio da nossa API chamado “minhaurl”, nós podemos ter os seguintes endpoints (lembrando que por padrão, as APIs Restful tem o nome no plural do recurso que ela está tratando):

  • https://minhaurl/people – Utilizando o método GET – Irá retornar todas as pessoas cadastradas, por exemplo:
{
   "status":200,
   "data":[
      {
         "id":1,
         "name":"John Doe",
         "age":20
      },
      {
         "id":2,
         "name":"Mary Ann",
         "age":25
      }
   ]
}
  • https://minhaurl/people/{id} – Utilizando o método GET – Irá retornar as informações do usuário com o id informado. Como por exemplo https://minhaurl/people/1, irá retornar as informações do recurso Person com o id 1:
{
   "status":200,
   "data":[
      {
         "id":1,
         "name":"John Doe",
         "age":20
      }
   ]
}
  • https://minhaurl/people – Utilizando o método POST – Irá criar um novo recurso do tipo Person. Para isso, é necessário enviar um corpo de requisição e a API irá retornar um status HTTP indicando se foi possível ou não criar este recurso, como por exemplo:

Corpo da Requisição:

{
   "Name": "Peter Jones",
   "age":20
}

Corpo do Retorno:

{
   "status":200,
   "success":true
}
  • https://minhaurl/people/{id} – Utilizando o método PUT – Irá atualizar o recurso do tipo Person com o id informado. Para isso, é necessário enviar um corpo de requisição e a API irá retornar um status HTTP indicando se foi possível ou não criar este recurso, como por exemplo:

Corpo da Requisição:

{
   "id":1,
   "Name": "John Smith",
   "age":20
}
  • https://minhaurl/people/{id} – Utilizando o método PATCH – Irá atualizar o recurso do tipo Person com o id informado. A diferença do método PATCH para o método PUT é que no PATCH não é necessário informar todos os atributos do recurso, apenas o(s) que será(ão) atualizado(s). Para isso, é necessário enviar um corpo de requisição e a API irá retornar um status HTTP indicando se foi possível ou não criar este recurso, como por exemplo:

Corpo da Requisição:

{
   "age":25
}
  • https://minhaurl/people/{id} – Utilizando o método DELETE – Irá excluir o recurso com o id informado. Como por exemplo https://minhaurl/people/1, irá excluir o recurso Person com o id 1:

Corpo do Retorno:

{
   "status":200,
   "success":true
}

Ainda é possível não depender de APIs para desenvolvimento, mas quando o assunto são integrações entre serviços, elas dominam. APIs não são essenciais para deixar projetos robustos e funcionais, mas são imprescindíveis para integrar esses projetos com serviços de terceiros e outras aplicações que utilizam frameworks como React, VueJS e Angular.

A grande sacada das APIs RESTful é que elas servem para estruturar qualquer aplicação web para os dias de hoje, onde temos muitos dados e muitas pessoas trocando informações. Sua principal utilização é na troca de informações entre Apps e sistemas, tudo de forma padronizada.

Criação de uma API

Para criar uma API é necessário ter conhecimentos intermediários em protocolo HTTP, servidores web (como Apache e NGINX) e uma linguagem de programação para web, como PHP, Javascript, Ruby e Python. Isso estamos falando do “starter pack”, pois é possível ir além e utilizar linguagens de outros paradigmas, como Golang e Clojure.

JavaScript também é uma linguagem importante a se dominar para a criação de APIs. Já existem alguns deles totalmente em JS, tanto para frontend quanto para backend. O JavaScript é essencial, uma vez que tudo que mexe com frontend na web acaba esbarrando com ele.

Não é obrigatório saber JavaScript para backend, ou seja, criar as APIs. Isso porque elas podem ser criadas usando qualquer outra linguagem que permita uma interface HTTP.

No momento da criação é importante ter em mente o que você pretende captar e transmitir de uma aplicação para outras. Codificar uma API pode não ser totalmente complexo, porém, é muito importante que você se atenha aos seguintes aspectos:

  1. O escopo da aplicação;
  2. Como serão fornecidos os dados;

Outro ponto importante: Não se esqueça de analisar quais tipos de requisição podem gerar gargalos na aplicação (excesso de pedidos que demandam estratégias como cache, por exemplo).

As APIs são altamente funcionais e pretendem facilitar a execução de tarefas de uma maneira significativa. Quer saber mais dicas de desenvolvimento e descobrir outros temas, como dicas sobre frameworks e a importância do SEO para desenvolvedores?

Não deixe de continuar navegando pelo nosso blog! Aqui você vai encontrar conteúdos exclusivos e voltados para auxiliar na sua rotina de trabalho!

Comentários
Pressione Enter para pesquisar ou ESC para fechar