API de Câmbio
O próximo passo é criar uma API que permita aos usuários converter valores entre moedas. A API deve usar um serviço de terceiros para obter as taxas de câmbio. Note que este microsserviço deve ser implementado em Python.
flowchart LR
subgraph api [Camada confiável]
gateway --> account
gateway --> auth
account --> db@{ shape: cyl, label: "Banco de dados" }
auth --> account
gateway e1@==> exchange:::red
gateway --> product
gateway --> order
product --> db
order --> db
order --> product
end
exchange e3@==> 3partyapi:::green@{label: "API de terceiros"}
internet e2@==>|requisição| gateway
e1@{ animate: true }
e2@{ animate: true }
e3@{ animate: true }
classDef red fill:#fcc
classDef green fill:#cfc
click product "#product-api" "Product API" Atenção
Para consumir a API, o usuário deve estar autenticado.
Usando FastAPI1 (ou outro framework) em Python , crie uma API REST que permita aos usuários converter valores entre moedas. A API deve expor o seguinte endpoint:
GET /exchanges/{from}/{to}
Obtém a taxa de câmbio atual de uma moeda para outra. Ex.: GET /exchange/USD/EUR.
A API deve depender de um serviço de terceiros para obter as taxas de câmbio. Você pode usar o plano gratuito de qualquer um dos seguintes, por exemplo:
- AwesomeAPI;
- ExchangeRate-API;
- Open Exchange Rates;
- CurrencyLayer;
- qualquer outra API.
Ou, você pode fazer scraping dos dados de um site.
Dica
Você pode usar a biblioteca requests para fazer requisições HTTP à API de terceiros.
Entrega
Individualmente, cada aluno deve criar um repositório no GitHub, com a documentação em MkDocs dos exercícios realizados e também com o projeto e entregar o link via Blackboard. Na documentação publicada deve constar:
- Nome do aluno e grupo;
- Documentação das atividades realizadas;
- Código fonte das atividades realizadas;
- Documentação do projeto;
- Código fonte do projeto;
- Link para todos os repositórios utilizados;
- Destaques para os bottlenecks implementados (ao menos 2 por indivíduo);
- Apresentação do projeto;
- Vídeo de apresentação do projeto (2-3 minutos);
Um template de documentação pode ser encontrado em Template de Documentação.