[Desafio] – Integração com Múltiplas APIs (scatter/gather)

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 …


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

img

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

img

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?

img

img

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.

Image

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).

Image

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

Image

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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » [Desafio] – Integração com Múltiplas APIs (scatter/gather)." Francisco Zanfranceschi | Sciencx - Saturday July 16, 2022, https://www.scien.cx/2022/07/16/desafio-integracao-com-multiplas-apis-scatter-gather/
HARVARD
Francisco Zanfranceschi | Sciencx Saturday July 16, 2022 » [Desafio] – Integração com Múltiplas APIs (scatter/gather)., viewed ,<https://www.scien.cx/2022/07/16/desafio-integracao-com-multiplas-apis-scatter-gather/>
VANCOUVER
Francisco Zanfranceschi | Sciencx - » [Desafio] – Integração com Múltiplas APIs (scatter/gather). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/07/16/desafio-integracao-com-multiplas-apis-scatter-gather/
CHICAGO
" » [Desafio] – Integração com Múltiplas APIs (scatter/gather)." Francisco Zanfranceschi | Sciencx - Accessed . https://www.scien.cx/2022/07/16/desafio-integracao-com-multiplas-apis-scatter-gather/
IEEE
" » [Desafio] – Integração com Múltiplas APIs (scatter/gather)." Francisco Zanfranceschi | Sciencx [Online]. Available: https://www.scien.cx/2022/07/16/desafio-integracao-com-multiplas-apis-scatter-gather/. [Accessed: ]
rf:citation
» [Desafio] – Integração com Múltiplas APIs (scatter/gather) | Francisco Zanfranceschi | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.