/Alura_Challenge_Backend_5

API REST desenvolvida com SpringBoot para o Challenge#5 Backend da Alura

Primary LanguageJava

ALURA CHALLENGE BACKEND #5

logo

In Development Badge

API REST desenvolvida durante o challenge #05 de backend da Alura.

Esta API implementa as seguintes especificações:

  1. Rotas no padrão REST com serviço de autenticação.
  2. Validações feitas conforme as regras de negócio.
  3. Base de dados para persistência das informações.
  4. Serviço de autenticação Stateless com JWT para acesso às rotas GET, POST, PUT e DELETE.
  5. Paginação das requisições.

Regras de Negócio:

  1. Todos os campos de vídeos e categorias devem ser obrigatórios e validados.
  2. A categoria com ID = 1, deve chamar LIVRE e caso ela não seja especificada na criação do vídeo, será atribuído o ID = 1.
  3. Endpoint "GET /videos/free" com um número fixo de filmes disponível, sem a necessidade de autenticação.

Rotas CRUD:

Method Route Description Body Param. Query Param. Necessário Autenticação
POST /login Autentica e retorna o token JWT
{"username":"","password":""}
- Não
GET /videos/free Retorna videos livres - - Não
GET /videos Retorna todos os vídeos - - Sim [USER]
GET /videos/{id} Retorna video pelo id - video id Sim [USER]
GET /videos/?search={nome} Buscar um vídeo pelo nome - nome a ser buscado Sim [USER]
POST /videos Cria um novo vídeo
{"titulo","descricao","url","categoriaId"}
- Sim [USER]
PUT /videos/{id} Atualizar video
{"titulo","descricao","url","categoriaId"}
video id Sim [ADMIN]
DELETE /videos/{id} Deleta video pelo id - video id Sim [ADMIN]
GET /categorias Retorna todas as categorias - - Sim [USER]
GET /categorias/{id} Retorna categoria pelo id - categoria id Sim [USER]
GET /categorias/{id}/videos Retorna todos os videos pertencentes a uma categoria - categoria id Sim [USER]
POST /categorias Cria uma nova categoria
{"titulo","cor"}
- Sim [USER]
PUT /categorias/{id} Atualizar categoria
{"titulo","cor"}
categoria id Sim [ADMIN]
DELETE /categorias/{id} Deleta categoria pelo id - categoria id Sim [ADMIN]

Deploy:

Foi feito o Deploy da aplicação como um serviço Web na nuvem, utilizando a plataforma Amazon AWS.
Disponivel através do ip: 54.234.0.133

screenshot

Testes:

Os testes estão implementados em Spring MockMvc para os seguintes cenários:

Method Descrição Autenticação Status Code
GET, POST, PUT, DELETE rota /videos e /categorias Não 403 Forbidden
PUT, DELETE rota /videos e /categorias Privilégio Insuficiente 403 Forbidden
GET, PUT, DELETE item inexistente Autorizado 404 Not Found
GET rota /videos e /categorias Autorizado 200 Ok
GET rota /videos/free Não 200 Ok
PUT, DELETE rota /videos e /categorias Autorizado 204 No Content
POST rota /videos e /categorias Autorizado 201 Created

Stack:

  • Linguagem Java
  • Framework Spring Boot
  • Maven
  • Banco de Dados MySQL
  • JJWT - Java Json Web Token
  • JUnit
  • Amazon AWS

Pendentes Semana 1:

  • Testes para verificar Status code das requisições GET, POST, PUT e DELETE.

Pendentes Semana 2:

  • Adicionar categorias e seus campos na base de dados.
  • Rotas CRUD para /categorias.
  • Incluir campo categoriaId no modelo video.
  • Escrever os testes necessários.

Pendentes Semana 3:

  • Implementar uma rota para videos livres sem autenticação.
  • Implementar um mecanismo de autenticação na API.
  • Reimplementar os testes com base em autenticação.
  • Realizar o deploy da API em algum provedor Cloud.