- Não é permitido cadastro de artistas com nome repetido.
- Não é permitido cadastro de álbuns com nome repetido vinculado ao mesmo artista.
- Ao incluir um novo álbum de um artista, a lista deve ser atualizada, não sobrescrita.
- O Sistema permite pesquisar todos os álbuns a partir do id do artista.
Padrão CRUD
- CREATE Através do método POST, o sistema permitirá cadastrar um novo artista. Considerando as regras de negócio nº 1 e 2.
- READ Através do método GET, o sistema permitirá exibir todos os artistas e também pesquisar os álbuns de um artista específico.
- UPDATE Através do método PUT, o sistema permitirá atualizar a lista de álbuns de um artista específico.
- DELETE Através do método DELETE, o sistema permitirá deletar um artista específico, usando o id como parâmetro.
Endpoint: /artistas Response Status 201
{
"nome": "Ana Carolina",
"genero": "MPB",
"anoDeFundacao": "1995",
"albuns": [
{
"nome": "Perfil",
"ano": "2003",
"gravadora": {
"nome": "Xablau Records"
}
}
]
}
{
"nome": "banda 1",
"genero": "MPB",
"anoDeFundacao": "1995",
"albuns": [
{
"id": 3,
"nome": "album1",
"ano": "2003",
"gravadora": {
"id": 3,
"nome": "Gravadora Records"
}
}
]
}
Endpoint: /artistas
{
"nome": "Aerosmith"
},
{
"nome": "Beyonce"
} ,
{
"nome":
"Bonde do Tigrão"
},
{ "nome": "Caetano Veloso"
},
{
"nome":
"Racionais MCS"
},
{ "nome": "Incubus"
},
{
"nome": "RZO"
},
{
"nome":
"MC Bola de Fogo"
}
,
{
"nome": "Anitta"
},
{
"nome": "Ana Carolina"
}
Endpoint: /artistas/{id}
[
{
"nome": "Aerosmith",
"albuns": [
{
"id": 1,
"nome": "Pink",
"ano": "1989",
"gravadora": {
"id": 1,
"nome": "Xablau Records"
}
}
]
}
]
Endpoint:/albuns Response Status 201
{ "ano": "2010",
"gravadora": {
"id": 0,
"nome": "string"
},
"id": 0,
"nome": "string"
}
Endpoint: /albuns/{id}
{
"id": 3,
"nome": "Formation",
"ano": "2016",
"gravadora":
{
"id": 3,
"nome": "Def jam Records"
}
}
Endpoint: /artistas/{id} Response Status 204
- Permitir cadastro de um álbum existente (com o mesmo nome), mas para artistas diferentes.
- Refatorar os métodos que não estão de acordo com o principio da responsabilidade única (Single Responsibility Principle).
- Considerar mais exceções através de testes mais específicos.
- Cadastrar gravadora quando um álbum for atualizado.
- Repensar lógica da exceção "cadastro existente exception", pois não está funcionando corretamente.