Henrique F. Badin
Este projeto é uma API que permite o cadastro, login e consulta de imagens do espaço, obtidas aleatoriamente a partir de uma API da NASA. Desenvolvido com Node.js, a aplicação gerencia usuários em um banco de dados PostgreSQL em um container Docker.
Para rodar a aplicação, siga estes passos:
- Baixe o arquivo compose.yml: Baixar compose.yml
- Execute o Docker Compose:
Certifique-se de ter o Docker e o Docker Compose instalados. Execute o docker. Após isso, execute o comando abaixo no terminal CMD, no diretório onde o arquivo
compose.yamlestá localizado:docker compose up -d - Acesse a aplicação:
A aplicação estará disponível em
http://localhost:8080, conforme configurado nocompose.yaml.
Registra um novo usuário.
Request
{
"nome": "Disciplina Cloud",
"email": "[email protected]",
"senha": "cloud0"
}Response
- resposta positiva (201)
{
"message": "Usuário registrado com sucesso!",
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwibm9tZSI6IkRpc2NpcGxpbmEgQ2xvdWQiLCJlbWFpbCI6ImNsb3VkQGluc3Blci5lZHUuYnIiLCJpYXQiOjE3MzA0MDg5MzgsImV4cCI6MTczMDQxMjUzOH0.fe5qVKSO5oaQY-U9iVfFR7oRteB2J_N51BAArC_PJRA"
}- resposta caso o nome esteja em branco (400)
{
"error": "Nome não pode ser nulo."
}- resposta caso um dos parâmetros exceda o limite de caracteres (400)
{
"error": "Nome/Email/Senha estourou o limite de caracteres."
}- resposta caso o email já esteja cadastrado (409)
{
"error": "Email já está em uso."
}- resposta para erro no servidor (500)
{
"error": "Erro no servidor."
}Autentica o usuário registrado.
Request
{
"email": "[email protected]",
"senha": "cloud0"
}Response
- resposta positiva (200)
{
"message": "Login realizado com sucesso!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTQsIm5vbWUiOiJDbG91ZCIsImVtYWlsIjoiY2xvdWQwQGdtYWlsLmNvbSIsImlhd(...)"
}- resposta caso o email não esteja registrado no sistema (401)
{
"error": "Email não existe no sistema."
}- resposta caso a senha esteja incorreta (401)
{
"error": "Senha incorreta para esse endereço de email."
}- resposta para erro no servidor (500)
{
"error": "Erro no servidor."
}Esse endpoint consulta faz uma consulta na API da NASA e retorna a imagem do dia. Todo dia uma nova imagem é retornada.
Headers
Authorization: Bearer <JWT>
Response
resposta positiva (200)
{
"message": "Dados da NASA consultados com sucesso!",
"data": "2024-10-16",
"title": "Astronomy Picture of the Day",
"url": "https://apod.nasa.gov/apod/image/2410/picture.jpg",
"explanation": "Explicação detalhada sobre a imagem do dia...",
"copyright": "NASA"
}resposta de erro na requisição (500)
{
"error": "Erro ao consultar dados Dados da NASA."
}Para interagir com a API, você pode utilizar o Postman ou o terminal CMD do diretório com cURL. Além disso, é possível utilizar o swagger da API no endpoint /docs. Recomendo o uso do Postman para uma melhor visualização das respostas.
- Instale o Postman: Se ainda não o possui, faça o download e instale o Postman aqui.
- Realize as requisições: Use as informações dos endpoints documentados para realizar suas requisições.
Se preferir usar o terminal do windows, o CMD, você pode usar cURL para fazer as requisições. Aqui estão alguns exemplos de como você pode testar os endpoints:
- Registrar um novo usuário:
Copiar código e adaptá-lo
curl -X POST http://localhost:8080/registrar -H "Content-Type: application/json" -d "{\"nome\": \"<Seu nome>\",\"email\": \"<Seu email>\", \"senha\": \"<Sua senha>\"}"
- Login do usuário:
Copiar código e adaptá-lo
curl -X POST http://localhost:8080/login -H "Content-Type: application/json" -d "{\"email\": \"<Seu email>\", \"senha\": \"<Sua senha>\"}"
- Consultar uma imagem do espaço:
Copiar código e adaptá-lo
curl -X GET http://localhost:8080/consultar -H "Authorization: Bearer <Seu JWT>"
Substitua os parâmetros como <Seu nome> pelo seu próprio nome e <JWT> pelo token obtido após o login.
Veja um vídeo curto de execução da aplicação aqui.
Imagem disponível no Docker Hub: Link para Docker Hub
O arquivo compose.yaml está localizado na raiz do projeto https://github.com/HenriqueFBadin/ProjetoCloud. Caso não consiga instalá-lo pelo botão, busque-o nesse repositório. Ele utiliza imagens do Docker Hub e configura o PostgreSQL e a API para que não haja necessidade de builds adicionais.