Construa uma API RESTful simples chamada MyAnimeList-Pessoal, onde o usuário pode cadastrar e gerenciar seus animes favoritos.
É um desafio 100% focado em fundamentos de Java + REST, com complexidade ideal para estagiário ou pessoa desenvolvedora júnior em início de carreira.
| Método | Endpoint | Descrição | Status Sucesso | Status Erro |
|---|---|---|---|---|
| POST | /animes |
Cadastra um novo anime | 201 Created | 400 Bad Request |
| GET | /animes |
Lista todos os animes cadastrados | 200 OK | - |
| GET | /animes/{id} |
Busca um anime específico pelo ID | 200 OK | 404 Not Found |
| PUT | /animes/{id} |
Atualiza informações de um anime existente | 200 OK | 404 Not Found |
| DELETE | /animes/{id} |
Remove um anime da lista | 204 No Content | 404 Not Found |
{
"titulo": "Jujutsu Kaisen",
"genero": "Shounen",
"anoLancamento": 2020,
"estudio": "MAPPA",
"notaPessoal": 9.5,
"assistido": true
}O campo id (Long) deve ser gerado automaticamente pela aplicação.
- Java 8 ou superior
- Spring Boot (recomendado) ou Spark Java
- Armazenamento em memória (HashMap ou List)
- Tudo em JSON
- Sem autenticação
- Código limpo e bem organizado
src/main/java/com.seunome.myanimelist/
├── model/
│ └── Anime.java
├── service/
│ └── AnimeService.java
├── controller/
│ └── AnimeController.java
└── MyAnimeListApplication.java
# Cadastrar
curl -X POST http://localhost:8080/animes -H "Content-Type: application/json" -d '{
"titulo":"Chainsaw Man","genero":"Shounen","anoLancamento":2022,"estudio":"MAPPA","notaPessoal":9.8,"assistido":false
}'
# Listar tudo
curl http://localhost:8080/animes
# Buscar um específico
curl http://localhost:8080/animes/1
# Marcar como assistido + mudar nota
curl -X PUT http://localhost:8080/animes/1 -H "Content-Type: application/json" -d '{
"notaPessoal":10.0, "assistido":true
}'
# Remover
curl -X DELETE http://localhost:8080/animes/1- Todos os 5 endpoints funcionando corretamente
- Códigos HTTP corretos (201, 200, 204, 404)
- Tratamento de anime não encontrado (404)
- Separação clara entre model / service / controller
- Código limpo, legível e comentado
- Geração automática de ID
- Persistência em arquivo JSON ou banco H2
- Validação (ex: nota entre 0 e 10, título obrigatório)
- Filtro GET
/animes?assistido=trueou/animes?genero=Shounen - Testes unitários/integração
- Swagger/OpenAPI
- Repositório Git público
- README.md com instruções claras de como rodar
- Commits organizados
Divirta-se construindo sua própria MyAnimeList!
Boa sorte e que venha o 10/10!