Aplicações de software tornaram nossas vidas mais fáceis e melhores de muitas maneiras. As usamos quase diariamente, e algumas pessoas encontram-se usando aplicações mais frequentemente do que interagem com outras pessoas.
Mas como as aplicações interagem entre si? Bem, fazem isso através de APIs – Interfaces de Programação de Aplicações. Neste artigo, você vai aprender o que são APIs. Vamos nos concentrar especificamente em Web APIs e seu design e desenvolvimento.
O que é uma Web API?
Web APIs são um tipo de API projetado para ser usado na web. Em outras palavras, aplicações de software baseadas na web, sistemas e serviços usam Web APIs para trocar informações pela internet. Eles envia requests e recebem responses, normalmente em formatos como JSON ou XML.
As Web APIs desempenham um papel crucial na moderna programação de software por以下motivos:
-
Interoperabilidade: As APIs são tecnologia-agnósticas, o que significa que elas permitem que diferentes sistemas de software se comuniquem entre si independentemente da stack de tecnologia. Isso permite que os desenvolvedores integrem diversas aplicações de forma fácil.
-
Escalabilidade: As Web APIs apoiam o desenvolvimento modular, permitindo que diferentes componentes de uma aplicação sejam construídos, debugados e escalados independentemente. Isso melhora muito a escalabilidade do sistema.
- Flexibilidade e Extensibilidade: Conforme padrões práticos e regras bem definidas, as APIs da Web ajudam as aplicações a extenderem suas funcionalidades. Elas também são flexíveis o suficiente para permitir que os desenvolvedores criem aplicações dinâmicas.
Métodos de Desenvolvimento de APIs da Web
As APIs da Web podem ser desenvolvidas usando vários métodos baseados nas exigências. Aqui estão algumas abordagens comumente seguidas:
- REST – Transferência de Estado representacional (REST) as APIs usam o protocolo HTTP para realizar operações. Eles operam de forma estado-menos, o que significa que cada solicitação deve incluir toda a informação necessária para o receptor processar e responder.
- SOAP – Protocolo de Acesso Simples a Objetos usa XML para trocar informações de uma maneira estruturada.
-
GraphQL – utilizado para efetuar consultas e manipular APIs.
-
gRPC – uma estrutura de Chamada de Procedimento Remoto que usa HTTP/2 para transportar informações.
Nas próximas seções, exploraremos o design e o desenvolvimento de APIs, concentrando-nos nas APIs REST como o protocolo central para nossa discussão.
Entendendo os Requisitos e Objetivos
Em qualquer processo de desenvolvimento de software, é crucial entender os requisitos e o caso de uso pretendido antes de começar. Isso ajuda a planejar e estimar o custo, o tempo e outros recursos necessários para o projeto.
O mesmo se aplica ao criar APIs RESTful. É preciso determinar se as aplicações trocarão informações de forma stateless, se as entidades envolvidas podem ser representadas como recursos e se os serviços são flexíveis o suficiente para trabalhar com diferentes formatos de dados.
Definindo os Recursos e Endpoints
As APIs REST giram em torno de resources, que são entidades que representam os dados ou objetos no sistema. Cada recurso é identificado por um URI único chamado identificador de recurso. Estes recursos podem ser acedidos e manipulados através de endpoints, que são URLs específicos que recebem e processam pedidos do cliente.
As melhores práticas sugerem a utilização de substantivos para recursos nos endpoints em vez de verbos que possam indicar uma operação no recurso.
Pense no seguinte exemplo: https://api.example.com/produtos
O ponto final segue as melhores práticas, usando um nome de substantivo para o recurso (neste caso, produtos
). Note que eu usei a forma plural – produtos? Também é recomendável usar plurais se você estiver trabalhando com uma coleção de objetos.
No entanto, o ponto final a seguir https://api.example.com/adicionar-produto
não é recomendado, pois usa um verbo e tenta descrever uma ação no recurso. Esta abordagem pode tornar-se complicada para operações mais complexas.
Outro aspecto importante das convenções de nomeação de pontos finais padrão é o uso de uma estrutura hierárquica. Isso ajuda a representar claramente as relações entre recursos.
Por exemplo: https://api.example.com/categorias/{categoryId}/produtos/{productId}
.
Aqui, definimos um ponto final que mantém uma hierarquia clara entre os recursos categoria
e produto
.
Uso de Métodos HTTP e Códigos de Status
Em APIs REST, HTTP é usado para a comunicação entre o cliente e o servidor. HTTP tem métodos padrão que são primariamente usados para realizar operações em recursos. Abaixo está uma lista destes métodos juntamente com seus propósitos:
-
GET – Recupera os detalhes do recurso. Estes detalhes são retornados pelo servidor no corpo da mensagem de resposta.
-
POST – Criar um novo recurso. Os detalhes do recurso a ser criado são enviados no corpo da mensagem de solicitação.
-
PUT – Criar ou atualizar um recurso, dependendo de sua disponibilidade. Os detalhes do recurso a ser criado ou atualizado são enviados no corpo da mensagem de solicitação.
-
DELETE – Remover um recurso.
-
PATCH – Atualizar parcialmente um recurso. As mudanças a serem feitas no recurso são enviadas no corpo da mensagem de solicitação.
A abordagem recomendada para desenvolver uma API REST bem definida é usar corretamente esses métodos HTTP para realizar as operações CRUD (Criar, Ler, Atualizar, Excluir) correspondentes ao recurso. Também devemos certificar-nos que a API responda ao cliente com um código de status HTTP apropriado no corpo da mensagem de resposta.
Os códigos de status refletem o resultado final de uma solicitação. A seguir estão alguns dos comuns códigos de status HTTP que você pode usar:
-
200 OK
-
201 Criado
-
204 Sem Conteúdo
-
400 Solicitação Inválida
-
401 Sem Autorização
-
403 Proibido
-
404 Não Encontrado
-
500 Erro Interno do Servidor
-
503 Serviço Indisponível
-
504 Tempo de Espera no Gateway Excedido
Use um código de status HTTP apropriado que represente com precisão o resultado da solicitação que seu ponto de extremidade da API está processando. Você também pode implementar status de código HTTP personalizados para descrever comportamentos específicos de aplicação.
Estratégias de Versão
Com o tempo, a API que você desenvolve irá evoluir e você fará mudanças em ela. É aqui que as estratégias de versão se tornam importantes. Você deve garantir que os clientes que já estão usando suas APIs não são afetados pelas mudanças que você faz.
Manter diferentes versões permitirá que suas APIs sejam retrocompatíveis e permita que os clientes usem a versão preferida da API com base em suas necessidades. Um trecho deste blog informativo no site do Postman explica quando é ideal versar suas APIs:
Você deve versionalizar sua API sempre que fizer uma mudança que exigirá que os consumidores modifiquem seu código para continuar usando a API. Essa tipo de mudança é conhecida como “mudança breaking” e pode ser feita nas estruturas de dados de entrada e saída da API, nas mensagens de feedback de sucesso e erro, e nos mecanismos de segurança.
A versionalização da API pode ser feita de diferentes maneiras. Aqui estão algumas técnicas:
-
Versionalização por URI: Inclua o número da versão no caminho da URL. Por exemplo,
https://api.example.com/v1/products
. -
Versionalização por Parâmetro de Consulta: Especifique o número da versão como um parâmetro de consulta na URL. Por exemplo,
https://api.example.com/products?version=1
. -
Versionalização por Cabeçalho: Inclua o número da versão nos cabeçalhos HTTP da requisição. Por exemplo, usando um cabeçalho personalizado como
X-API-Version: 1
. -
Negociação de conteúdo: especifique a versão no cabeçalho
Accept
da solicitação, geralmente usando tipos de mídia. Por exemplo,Aceitar: application/vnd.example.v1+json
. -
Versão incorporada: incorporar o número da versão no tipo de mídia da resposta. Por exemplo,
application/vnd.example.product-v1+json
.
Considerações sobre segurança
Outro aspeto importante a ser considerado ao desenvolver uma API é a segurança. Aqui estão alguns pontos-chave a serem lembrados:
-
Implemente o HTTPS para criptografar as informações trocadas entre o cliente e o servidor.
-
Implementar a autenticação e a autorização para garantir que apenas os utilizadores com os privilégios certos possam efetuar operações nos recursos. Os métodos comuns incluem autenticação básica, autenticação de portador ou token, JWT e OAuth 2.0. Além disso, implemente o controlo de acesso baseado em funções para gerir o acesso aos recursos.
-
Implemente validação e sanitização de entradas para prevenir ataques de vulnerabilidades, como injeção de SQL e Cross-Site Scripting (XSS).
-
Implemente limitação de taxa e aplicação de taxa para controlar o número de solicitações que um cliente pode fazer ao servidor em um determinado período de tempo. Isso ajuda a evitar sobrecarga excessiva no servidor.
Documentação
Um aspecto chave, mas frequentemente negligenciado, do desenvolvimento de API é a documentação. É crucial documentar sua API para que usuários entendam suas funcionalidades e recursos.
A documentação deve ser abrangente, fácil de entender, e seguir práticas padrão. Inclua exemplos de corpo de solicitação e resposta, códigos de status HTTP usados, e mais. Você pode seguir a especificação Open API para descrever suas APIs RESTful.
Estratégias de classificação, filtragem e paginação
A API que você desenvolve pode causar problemas de performance se ela retornar muitos registros. É ineficiente recuperar grandes quantidades de dados e depois ordená-los ou filtrá-los.
Para resolver isso, você deve habilitar a ordenação e o filtragem de registros. Você também deve implementar a paginação para quebrar a quantidade de registros que estão sendo recuperados e definir um limite para navegação e processamento mais fáceis.
Monitoramento de Uso, Logs e Saúde
É uma boa ideia registrar suas solicitações e respostas de API para ajudar no debugging. Monitorar o uso da API ajudará você a entender o desempenho e o comportamento geral do aplicativo. Executar verificações de saúde regularmente pode ajudar você a tomar ação necessária se houver problemas. Todas essas etapas tornarão a API mais robusta e confiável.
Conclusão
As APIs, especialmente as Web APIs, são essenciais para que aplicações de software se comuniquem via internet.
Este artigo explicou o que são as Web APIs, por que são importantes e diferentes abordagens para desenvolvê-las, focando nas APIs REST. Você também aprenderam sobre tópicos chave como definir recursos e pontos finais, usar métodos HTTP padrão e códigos de status, estratégias de versão, considerações de segurança, documentação e muito mais.
Se você achou este artigo interessante, sinta-se livre para ver outros meus artigos no freeCodeCamp e conectar-se comigo no LinkedIn.
Source:
https://www.freecodecamp.org/news/how-to-design-and-develop-web-apis-essential-guidelines/