This content originally appeared on DEV Community and was authored by Francisco Zanfranceschi
Conteúdo original nessa thread do Twitter
Ei, dev!
Você está prestes a aceitar o desafio mais legal de 2022! São 3 níveis de dificuldade pra todo mundo participar.
É sobre uma aplicação de cotação financeira com integração com outras APIs (que já fiz pra você com muito carinho).
cc @sseraphini
↓
Se você estiver iniciando, seu desafio é fazer uma integração chamando uma API que devolve uma cotação fictícia. A chamada é a seguinte:
GET /servico-a/cotacao?moeda=USD
Se quiser algo mais desafiador, faça chamadas para os serviços A e B:
GET /servico-a/cotacao?moeda=USD
GET /servico-b/cotacao?curr=USD
Esses 2 serviços têm um delay proposital pra que você exercite fazer chamadas em paralelo (com promise, future, async, await, etc). De boa?
Os serviços A e B têm retornos diferentes, tanto para chamadas inválidas (um retorna 400 e outro 422) quanto para as válidas. Afinal, são serviços diferentes. 😏
Retorne a melhor cotação dentre os dois serviços, ok?
Agora, se você quiser sangue mesmo 🩸, integre também com o serviço C! Ele tem um processamento assíncrono que fará um callback (webhook) para a URL que informar após terminar a cotação.
O maior desafio na integração com o serviço C é, a partir de um processo síncrono da sua parte (imagine você disponibilizar uma API para a melhor cotação dentre as 3), tratar o retorno assíncrono do serviço C. Use o cid (correlation id) para isso.
O callback do serviço C é um POST para a URL que informar com o payload como na imagem.
(obs.: se estiver usando docker + ambiente local, use os endereços "especiais" http://172.17.0.1:(porta) ou http://host.docker.internal:(porta) pro docker conseguir acessar seu ambiente).
Bom, você tem algumas opções para rodar essas APIs que fiz pra você:
- Via docker (que é o mais simples); ou
- Baixar e executar o código hospedado no github.
(Essas 3 APIs, na verdade são apenas um codebase/imagem com 3 endpoints representando cada serviço.)
Docker:
A imagem docker para esse desafio está disponível no dockerhub e pra sair usando é só executar:
docker run --rm -p 8080:80 zanfranceschi/desafio-01-cotacoes
https://hub.docker.com/repository/docker/zanfranceschi/desafio-01-cotacoes
Código fonte:
Se quiser executar localmente, fazer modificações, etc, está tudo disponível no github.
https://github.com/zanfranceschi/desafio-01-cotacoes
Seria muito top se você criasse um repositório git com a sua integração! E claro, como sempre, faça do jeito que você quiser ─ o importante é sempre aprender se divertindo!
Muito obrigado se leu até aqui! Se curtiu essa desafio, dá um RT no primeiro tweet, like e comenta!
This content originally appeared on DEV Community and was authored by Francisco Zanfranceschi
Francisco Zanfranceschi | Sciencx (2022-07-16T16:36:38+00:00) [Desafio] – Integração com Múltiplas APIs (scatter/gather). Retrieved from https://www.scien.cx/2022/07/16/desafio-integracao-com-multiplas-apis-scatter-gather/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.