Usando APIs para integrar e ampliar as funcionalidades das suas aplicações web

Usando APIs para integrar e ampliar as funcionalidades das suas aplicações web

O desenvolvimento backend é uma área da programação que se dedica a criar a lógica, o funcionamento e a comunicação dos sistemas web. O desenvolvedor backend é responsável por implementar as regras de negócio, gerenciar os dados, integrar as APIs e garantir a segurança e o desempenho das aplicações.

Uma das tendências do momento é o uso de APIs (Application Programming Interfaces) para integrar e ampliar as funcionalidades das aplicações web.

Neste artigo, vamos explicar o que são APIs, quais são os seus tipos e vantagens, como usá-las para integrar e ampliar as funcionalidades das aplicações web e quais são as melhores práticas e ferramentas para trabalhar com elas. Também mostremos exemplos de código em Python, uma das linguagens mais populares e versáteis para o desenvolvimento backend.

O que são APIs?

APIs (Application Programming Interfaces) são interfaces que permitem a comunicação e a troca de dados entre diferentes sistemas, aplicações ou componentes. Elas definem um conjunto de regras, padrões e protocolos que especificam como os sistemas devem interagir entre si, quais são os dados que devem ser enviados e recebidos, quais são os formatos e as estruturas dos dados, quais são os métodos e as funções disponíveis, etc.

As APIs facilitam a integração e a ampliação das funcionalidades das aplicações web, pois permitem acessar e utilizar recursos externos, como serviços, bibliotecas, frameworks, etc. Por exemplo, uma aplicação web pode usar uma API para:

  • Acessar dados de outras fontes, como bancos de dados, arquivos, redes sociais, etc.
  • Realizar operações complexas ou específicas, como cálculos matemáticos, processamento de imagens, reconhecimento de voz, etc.
  • Adicionar funcionalidades extras ou personalizadas, como mapas, gráficos, chatbots, etc.

As APIs podem ser classificadas em diferentes tipos, dependendo do seu propósito, do seu escopo ou do seu estilo. Alguns dos tipos mais comuns são: APIs internas (ou privadas), APIs externas (ou públicas), APIs parceiras (ou compartilhadas), APIs RESTful (ou REST), APIs SOAP (ou SOAP), APIs GraphQL (ou GraphQL), etc.

Quais são os tipos e vantagens das APIs?

Existem vários tipos de APIs, cada um com suas características e vantagens. Alguns dos tipos mais comuns são:

APIs internas (ou privadas)

APIs internas (ou privadas) são APIs usadas apenas em uma organização ou de um sistema específico. Elas permitem a comunicação entre diferentes componentes ou módulos da mesma aplicação, ou de aplicações relacionadas.
Elas têm como vantagens:

  • Maior controle sobre os dados e as funcionalidades;
  • Maior segurança e privacidade;
  • Maior flexibilidade e customização.

APIs externas (ou públicas)

APIs externas (ou públicas) são APIs disponibilizadas para qualquer pessoa ou sistema que queira usá-las. Elas permitem a comunicação entre diferentes sistemas ou aplicações de diferentes domínios, ou organizações.
Elas têm como vantagens:

  • Maior alcance e visibilidade;
  • Maior interoperabilidade e compatibilidade;
  • Maior inovação e colaboração.

APIs parceiras (ou compartilhadas)

APIs parceiras (ou compartilhadas) são APIs disponibilizadas apenas para um grupo restrito de pessoas ou sistemas que tenham uma relação de parceria ou confiança com o provedor da API. Elas permitem a comunicação entre diferentes sistemas ou aplicações de diferentes domínios ou organizações que tenham interesses comuns ou complementares.
Elas têm como vantagens:

  • Maior qualidade e confiabilidade;
  • Maior integração e sinergia;
  • Maior valor e benefício.

APIs RESTful (ou REST)

APIs RESTful (ou REST) são APIs que seguem os princípios do estilo arquitetural REST (Representational State Transfer). Elas usam o protocolo HTTP (Hypertext Transfer Protocol) para realizar as operações de CRUD (Create, Read, Update, Delete) sobre os recursos (dados ou funcionalidades) da API.
Elas têm como vantagens:

  • Maior simplicidade e padronização;
  • Maior escalabilidade e desempenho;
  • Maior flexibilidade e adaptabilidade.

APIs SOAP (ou SOAP)

APIs SOAP (ou SOAP) são APIs que usam o protocolo SOAP (Simple Object Access Protocol) para realizar as operações sobre os serviços (funcionalidades) da API. Elas usam o formato XML (Extensible Markup Language) para estruturar e trocar os dados entre os sistemas.
Elas têm como vantagens:

  • Maior robustez e segurança;
  • Maior consistência e confiabilidade;
  • Maior formalidade e especificação.

APIs GraphQL (ou GraphQL)

APIs GraphQL (ou GraphQL) são APIs que usam a linguagem GraphQL para realizar as operações sobre os dados da API. Elas permitem que o cliente especifique exatamente quais dados ele quer receber da API, evitando o excesso ou a falta de dados.
Elas têm como vantagens:

  • Maior eficiência e otimização;
  • Maior flexibilidade e personalização;
  • Maior agilidade e produtividade.

Como usar APIs para integrar e ampliar as funcionalidades das aplicações web?

Para usar APIs para integrar e ampliar as funcionalidades das aplicações web, é preciso considerar alguns aspectos, como:

  • A escolha da API mais adequada para o caso de uso da aplicação web.
  • A documentação da API que contém as informações sobre como acessar e usar a API, como os endpoints, os parâmetros, os formatos, os exemplos, etc.
  • A implementação das operações de CRUD para manipular os dados ou as funcionalidades da API.
  • A integração da API com a linguagem e o framework da aplicação web.
  • A otimização das requisições e das respostas para garantir o desempenho e a eficiência da API.
  • A configuração da autenticação e da autorização para garantir a segurança e a privacidade da API.

A seguir, mostraremos um exemplo prático de como usar uma API externa do tipo RESTful (OpenWeatherMap) para integrar uma funcionalidade extra à nossa aplicação web em Python (Flask) que permite cadastrar e listar usuários. A funcionalidade extra consiste em mostrar a temperatura atual na cidade do usuário.

Escolha da API

Para este exemplo, usaremos a API do OpenWeatherMap, sendo uma API externa do tipo RESTful que permite acessar dados sobre o clima de diferentes cidades do mundo. A API do OpenWeatherMap tem como vantagens:

  • Ser gratuita e de fácil acesso;
  • Oferecer dados atualizados e confiáveis;
  • Suportar vários formatos e unidades de medida.

Documentação da API

Para usar a API do OpenWeatherMap, precisamos consultar a documentação da API, que contém as informações sobre como acessar e usar a API, como os endpoints, os parâmetros, os formatos, os exemplos, etc.

A documentação da API do OpenWeatherMap nos informa que:

  • Para acessar a API, precisamos obter uma chave de acesso (API key) no site do OpenWeatherMap , a qual é um código alfanumérico que identifica o nosso acesso à API.
  • Para obter a temperatura atual de uma cidade, precisamos usar o endpoint api.openweathermap.org/data/2.5/weather , que recebe como parâmetro obrigatório o nome da cidade (q) e como parâmetro opcional a unidade de medida (units).
  • Para receber a resposta da API em formato JSON, precisamos usar o cabeçalho Accept: application/json na requisição.
  • Para receber a temperatura em graus Celsius, precisamos usar o valor metric no parâmetro units.

Um exemplo de URL de requisição para obter a temperatura atual em graus Celsius na cidade de São Paulo seria:

http://api.openweathermap.org/data/2.5/weather?q=Sao Paulo&units=metric&appid=YOUR_API_KEY

Um exemplo de resposta da API em formato JSON seria:

{
  "coord": {
    "lon": -46.6361,
    "lat": -23.5475
  },
  "weather": [
    {
      "id": 800,
      "main": "Clear",
      "description": "céu limpo",
      "icon": "01d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 25.02,
    "feels_like": 25.02,
    "temp_min": 23.33,
    "temp_max": 26.67,
    "pressure": 1018,
    "humidity": 57
  },
  "visibility": 10000,
  "wind": {
    "speed": 3.09,
    "deg": 0
  },
  "clouds": {
    "all": 0
  },
  "dt": 1631217609,
  "sys": {
    "type": 1,
    "id": 8326,
    "country": "BR",
    "sunrise": 1631189152,
    "sunset": 1631231567
  },
  "timezone": -10800,
  "id": 3448439,
  "name": "São Paulo",
  "cod": 200
}

Nesta resposta, podemos ver que o campo temp contém a temperatura atual em graus Celsius na cidade de São Paulo, que é de 25.02°C. Podemos usar esse valor para mostrar na nossa aplicação web.

Implementação das operações CRUD

Para implementar as operações CRUD (Create, Read, Update, Delete) para manipular os dados ou as funcionalidades da API do OpenWeatherMap, usaremos a biblioteca Requests, que são uma biblioteca Python que permite enviar requisições HTTP de forma simples e intuitiva. A biblioteca Requests permite interagir com a API do OpenWeatherMap usando objetos Python nativos ou documentos JSON.

Para usar a biblioteca Requests, precisamos instalar ela usando o comando:

pip install requests

Em seguida, precisamos importar ela no nosso código Python usando o comando:

import requests

Agora, podemos implementar as operações CRUD usando os métodos da biblioteca Requests. Por exemplo:

  • Para enviar uma requisição GET para obter a temperatura atual de uma cidade, usamos o método get() , passando a URL da requisição como parâmetro. Por exemplo:

# Enviar uma requisição GET para obter a temperatura atual em graus Celsius na cidade de São Paulo
response = requests.get("http://api.openweathermap.org/data/2.5/weather?q=Sao Paulo&units=metric&appid=YOUR_API_KEY")

  • Para receber a resposta da API em formato JSON, usamos o método json() , que retorna um objeto Python que contém os dados da resposta. Por exemplo:

# Receber a resposta da API em formato JSON
data = response.json()

  • Para acessar o valor da temperatura atual na resposta da API, usamos a notação de colchetes ou de pontos, passando o nome do campo que queremos acessar. Por exemplo:

# Acessar o valor da temperatura atual na resposta da API
temp = data["main"]["temp"]

Integração da API com a linguagem e o framework da aplicação web

Para integrar a API do OpenWeatherMap com a linguagem (Python) e o framework (Flask) da aplicação web, vamos usar a biblioteca Flask-Requests, que é uma extensão do Flask que facilita o uso da biblioteca Requests dentro da aplicação Flask. A biblioteca Flask-Requests permite usar os mesmos métodos da biblioteca Requests, mas com uma sintaxe mais simples e integrada ao Flask.

Para usar a biblioteca Flask-Requests, precisamos instalar ela usando o comando:

pip install flask-requests

Em seguida, precisamos importar ela no nosso código Python usando o comando:

from flask_requests import Requests

Depois, precisamos criar uma instância da classe Requests e inicializá-la com a aplicação Flask usando os comandos:

app = Flask(__name__)
requests = Requests(app)

Nestes comandos, estamos criando uma instância da classe Requests chamada requests e inicializando ela com a aplicação Flask chamada app.

Agora, podemos usar a instância requests para realizar as operações CRUD usando os mesmos métodos da biblioteca Requests, mas com uma sintaxe mais simples e integrada ao Flask. Por exemplo:

  • Para enviar uma requisição GET para obter a temperatura atual de uma cidade, usamos o método get() , passando a URL da requisição como parâmetro. Por exemplo:

# Enviar uma requisição GET para obter a temperatura atual em graus Celsius na cidade de São Paulo
response = requests.get("http://api.openweathermap.org/data/2.5/weather?q=Sao Paulo&units=metric&appid=YOUR_API_KEY")

  • Para receber a resposta da API em formato JSON, usamos o método json() , que retorna um objeto Python que contém os dados da resposta. Por exemplo:

# Receber a resposta da API em formato JSON
data = response.json()

  • Para acessar o valor da temperatura atual na resposta da API, usamos a notação de colchetes ou de pontos, passando o nome do campo que queremos acessar. Por exemplo:

# Acessar o valor da temperatura atual na resposta da API
temp = data["main"]["temp"]

Otimização das requisições e das respostas

Para garantir o desempenho e a eficiência da API do OpenWeatherMap, é preciso otimizar as requisições e as respostas que são enviadas e recebidas pela aplicação web. Para isso, é preciso considerar alguns aspectos, como:

  • A frequência e a necessidade das requisições que são realizadas pela aplicação web.
  • Os parâmetros e os cabeçalhos que são usados nas requisições e nas respostas.
  • O tamanho e o formato dos dados que são enviados e recebidos pela API.
  • O tempo e o status das requisições e das respostas.

Para otimizar as requisições e as respostas da API do OpenWeatherMap, podemos usar alguns recursos, como:

  • O conceito de cache, que consiste em armazenar temporariamente os dados que são frequentemente acessados ou que não mudam com frequência, evitando requisições desnecessárias ou repetidas à API. Podemos usar a biblioteca Flask-Caching, que é uma extensão do Flask que permite implementar diferentes tipos de cache na aplicação web.
  • O conceito de rate limit, que consiste em limitar o número de requisições que podem ser realizadas por um determinado período de tempo, evitando sobrecarregar ou abusar da API. Podemos usar a biblioteca Flask-Limiter, que  é uma extensão do Flask que permite implementar diferentes tipos de limites de requisições na aplicação web.
  • O conceito de error handling, que consiste em tratar os possíveis erros ou exceções que podem ocorrer durante as requisições ou as respostas da API, evitando interromper ou comprometer o funcionamento da aplicação web. Podemos usar os recursos nativos do Python e do Flask para capturar e lidar com os erros ou exceções da API.

Conclusão

Neste artigo, vimos como usar APIs para integrar e ampliar as funcionalidades das aplicações web. Aprendemos o que são APIs, quais são os seus tipos e vantagens, como usá-las para acessar e utilizar recursos externos, como serviços, bibliotecas, frameworks, etc, e quais são as melhores práticas e ferramentas para trabalhar com elas. Também mostramos um exemplo prático de como usar uma API externa do tipo RESTful (OpenWeatherMap) para integrar uma funcionalidade extra à nossa aplicação web em Python (Flask) que permite cadastrar e listar usuários. A funcionalidade extra consiste em mostrar a temperatura atual na cidade do usuário.

Esperamos que este artigo tenha sido útil para você. Se você quiser saber mais sobre APIs, você pode acessar os links que citamos.

Referências Bibliográficas

  • API. https://pt.wikipedia.org/wiki/API
  • What is an API? In English, please. https://www.freecodecamp.org/news/what-is-an-api-in-english-please-b880a3214a82/
  • API Types: An Introduction to the Different Types of APIs. https://rapidapi.com/blog/api-types/
  • OpenWeatherMap API Documentation. https://openweathermap.org/api.
  • Requests: HTTP for Humans™ — Requests 2.26.0 documentation. https://docs.python-requests.org/en/latest/
  • Flask-Requests — Flask-Requests 0.1 documentation. https://flask-requests.readthedocs.io/en/latest/
  • Flask-Caching — Flask-Caching 1.10.1 documentation. https://flask-caching.readthedocs.io/en/latest/
  • Flask-Limiter — Flask-Limiter 1.4 documentation. https://flask-limiter.readthedocs.io/en/stable/
  • Error Handling in Python | Flask (A Web Framework) Tutorial #7. https://www.youtube.com/watch?v=Li5BLk0EScE

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.