Este projeto foi criado para testar seu conhecimento em tecnologias web de back-end, especificamente no nodejs, APIs Rest e serviços desacoplados.
O objetivo deste exercício é criar uma API simples usando nodejs (express) para permitir que os usuários consultem cotações de ações. O projeto consiste em dois serviços separados:
- Uma API voltada para o usuário que receberá solicitações de usuários registrados pedindo informações sobre cotações.
- Um serviço agregador de ações interno que consulta APIs externas para recuperar as informações de cotações solicitadas.
-
Os endpoints no serviço API devem exigir autenticação (não devem ser permitidas solicitações anônimas). Cada solicitação deve ser autenticada via Autenticação Básica.
-
Quando um usuário faz uma solicitação para obter uma cotação de ação (chama o endpoint de ação no serviço de api), se uma ação for encontrada, ela deve logar no console o usuário que faz a solicitação e a ação solicitada.
-
A resposta retornada pelo serviço API deve ser assim:
GET /stock?q=aapl.us
{
"símbolo": "AAPL.US",
"nome_da_empresa": "APPLE",
"cotação": 123
}
O valor da cotação deve ser obtido do campo close retornado pelo serviço de ações.
- Todas as respostas dos endpoints devem estar no formato JSON.
- Assuma que este é um serviço interno, então solicitações para endpoints neste serviço não precisam ser autenticadas.
- Quando uma solicitação de ação é recebida, este serviço deve consultar uma API externa para obter as informações da ação. Para este desafio, use esta API:
https://stooq.com/q/l/?s={código_da_ação}&f=sd2t2ohlcvn&h&e=csv. - Note que
{código_da_ação}acima é um parâmetro que deve ser substituído pelo código da ação solicitada. - Você pode ver uma lista de códigos de ações disponíveis aqui: https://stooq.com/t/?i=518
- Um usuário faz uma solicitação pedindo a cotação atual da ação da Apple: GET /stock?q=aapl.us
- O serviço API chama o serviço de ações para recuperar as informações da ação solicitada
- O serviço de ações delega a chamada para a API externa, analisa a resposta e retorna as informações de volta para o serviço API.
- Os dados são formatados e retornados ao usuário.
