API REST desenvolvida durante o challenge #05 de backend da Alura.
Esta API implementa as seguintes especificações:
- Rotas no padrão REST com serviço de autenticação.
- Validações feitas conforme as regras de negócio.
- Base de dados para persistência das informações.
- Serviço de autenticação Stateless com JWT para acesso às rotas GET, POST, PUT e DELETE.
- Paginação das requisições.
- Todos os campos de vídeos e categorias devem ser obrigatórios e validados.
- 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.
- Endpoint "GET /videos/free" com um número fixo de filmes disponível, sem a necessidade de autenticação.
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] |
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
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 |
Linguagem Java
Framework Spring Boot
Maven
Banco de Dados MySQL
JJWT - Java Json Web Token
JUnit
Amazon AWS
- Testes para verificar Status code das requisições GET, POST, PUT e DELETE.
- Adicionar categorias e seus campos na base de dados.
- Rotas CRUD para /categorias.
- Incluir campo categoriaId no modelo video.
- Escrever os testes necessários.
- 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.