Multithreading
Neste desafio você terá que usar o que aprendemos com Multithreading
e APIs
para buscar o resultado mais rápido entre duas APIs
distintas.
As duas requisições serão feitas simultaneamente para as seguintes APIs:
Os requisitos para este desafio são:
-
Acatar a API que entregar a resposta mais rápida e descartar a resposta mais lenta.
-
O resultado da request deverá ser exibido no command line
com os dados do endereço, bem como qual API a enviou.
-
Limitar o tempo de resposta em 1 segundo
. Caso contrário, o erro de timeout
deve ser exibido.
Requisitos básicos:
Como usar:
Para utilizar essa API, siga os seguintes passos:
Instalação:
- Verifique se Go está instalado em seu sistema:
go version
- Clone o repositório para sua máquina local:
git clone https://exemplo.com/seu-repositorio.git
Configuração:
- Para garantir que todas as dependências sejam resolvidas, execute:
go mod tidy
Utilização:
- A API está rodando na porta 8080 e o endpoint para obter informações de endereço com base em um CEP é:
http://localhost:8080/{cep}
- Para fazer uma requisição ao endpoint utilizando cURL, você pode executar o seguinte comando:
curl http://localhost:8080/01310930
- Essa requisição acima tem o seguinte retorno:
{
"api_name": "BrasilAPI",
"zip_code": "01310930",
"street": "Avenida Paulista 2100",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP"
}
Documentação:
Para acessar a documentação do Swagger da API, siga os passos abaixo:
- Certifique-se de que a API esteja em execução localmente.
- Abra um navegador da web e digite o seguinte URL na barra de endereço:
http://localhost:8080/swagger/index.html
- Pressione Enter para carregar a página da documentação do Swagger.
- Você verá a interface do Swagger, que permite explorar os endpoints da API, testar as operações disponíveis e visualizar detalhes sobre os parâmetros necessários para cada requisição.
- Agora você pode navegar pela documentação do Swagger para entender melhor como interagir com a API e seus endpoints.
A documentação do Swagger é uma ferramenta útil para facilitar o desenvolvimento, teste e integração de APIs.
Pontos de melhorias:
Para melhorar a API, aqui estão algumas sugestões de melhorias:
Devido à escolha de exercitaDevido à escolha de exercitar uma arquitetura mais complexa inicialmente, os testes foram deixados para um segundo momento. No entanto, a inclusão de testes de unidade e integração pode trazer benefícios significativos em termos de qualidade e confiabilidade do software. Essas melhorias garantirão que a API seja mais robusta, confiável e escalável no futuro.