O objetivo é criar uma aplicação web com autenticação via JWT (Json Web Token), e uma API para listar cervejarias filtradas por requisição baseada no openbrewerydb.
Para a parte de servidor da Web, você pode usar
Inclua um middleware para fazer login em todas as requisições
O endpoint de login ( POST /login
) deve retornar um token JWT assinado com username/password corretos.
O token deve ser assinado com https://github.com/auth0/node-jsonwebtoken e o signing secret deve ser fornecido via config.
O corpo da requisição POST deve conter { username: string, password: string }
.
A interface a seguir descreve o usuário.
{ id: string; username: string; password: string; }
Os usuários (com a interface fornecida) devem ser armazenados em um banco de dados. Você pode escolher qualquer banco de dados que desejar em sua solução, mas as credenciais devem ser fornecidas via config.
O endpoint das cervejarias ( GET /breweries
) deve ser protegido por um middleware personalizado.
O middleware deve validar o token e verificar se o usuário existe no banco de dados.
A fonte de dados deve ser o OpenBreweryDB https://www.openbrewerydb.org/
Use a API de pesquisa para consultar os dados https://api.openbrewerydb.org/breweries/search?query=dog
Para requisições, utilize o Axios:
O parâmetro de pesquisa deve ser fornecido nos parâmetros de consulta ( GET /breweries?query=dog
)
Se o usuário não for autenticado em GET /breweries
retorne 401
.
Se o usuário não forneceu um parâmetro de consulta, retorne os dados de https://api.openbrewerydb.org/breweries
Se o usuário chamou qualquer outro POST /login
ou GET /breweries
retorna 404
.
Por favor, utilize typescript, incluímos linting e testing neste projeto.
Você pode iniciar o projeto com yarn start
.
Você pode verificar o lint e a formatação do projeto com yarn lint
.
Se você estiver usando o VSCode, poderá usar estas extensões: