O objetivo é elaborar um microsserviço que será utilizado em uma plataforma de streaming. Essa API terá o intuito de gerenciar a coleção de filmes disponíveis.
O nome da tabela deve ser movies.
Coluna | Especificações |
---|---|
id | inteiro, auto incrementado e chave primária. |
name | string tamanho 50 e não nulo. |
category | string tamanho 20 e não nulo. |
duration | inteiro e não nulo. |
price | inteiro e não nulo. |
Método | Endpoint | Responsabilidade |
---|---|---|
POST | /movies | Criar os filmes |
GET | /movies | Listar todos os filmes |
GET | /movies/:id | Buscar filme por id |
PATCH | /movies/:id | Atualizar filme por id |
DELETE | /movies/:id | Deletar filme por id |
- A rota GET /movies, além de listar todos os filmes do cinema, também deve conseguir listar os filmes a partir da categoria específica.
- Essa categoria deve ser enviada pelo query parameter category.
- Caso a categoria enviada não exista, deve-se retornar todos os filmes do banco.
-
Na rotas GET, PATCH e DELETE /movies/:id, caso id não exista, deve-se retornar a mensagem de erro e status code mencionados abaixo:
-
Status code: 404 NOT FOUND.
-
Mensagem de retorno:
{ "message": "Movie not found!" }
-
-
Na rotas POST e PATCH, caso name já exista, deve retornar a mensagem de erro abaixo. O status code deve ser o mencionado abaixo:
-
Status code: 409 CONFLICT.
-
Mensagem de retorno:
{ "message": "Movie name already exists!" }
-
Rota de criação de filme. Deve ser possível criar um filme.
Corpo da requisição: |
---|
{
"name": "Divertidamente",
"category": "Animação",
"duration": 120,
"price": 35
}
Resposta do servidor: |
---|
Status code: 201 CREATED. |
{
"id": 1,
"name": "Divertidamente",
"category": "Animação",
"duration": 120,
"price": 35
}
Rota de listagem de filmes. Deve ser possível retornar todos os filmes do cinema.
Resposta do servidor: |
---|
Status code: 200 OK. |
[
{
"id": 1,
"name": "Divertidamente",
"category": "Animação",
"duration": 120,
"price": 35
},
{
"id": 2,
"name": "Matrix",
"category": "Ficção",
"duration": 120,
"price": 35
}
]
O exemplo abaixo foi realizado na seguinte rota: /movies?category=Animação.
Resposta do servidor: |
---|
Status code: 200 OK. |
[
{
"id": 1,
"name": "Divertidamente",
"category": "Animação",
"duration": 120,
"price": 35
}
]
O exemplo abaixo foi realizado na seguinte rota: /movies?category=outra categoria.
Resposta do servidor: |
---|
Status code: 200 OK. |
[
{
"id": 1,
"name": "Divertidamente",
"category": "Animação",
"duration": 120,
"price": 35
},
{
"id": 2,
"name": "Matrix",
"category": "Ficção",
"duration": 120,
"price": 35
}
]
Rota de busca de filme. Deve ser possível buscar um filme pelo id. O exemplo abaixo foi realizado na seguinte rota: /movies/1.
Resposta do servidor: |
---|
Status code: 200 OK. |
[
{
"id": 1,
"name": "Divertidamente",
"category": "Animação",
"duration": 120,
"price": 35
}
]
Rota de atualização de filme. Deve ser possível atualizar um filme pelo id. Todos os campos podem ser atualizados de forma opcional.
O exemplo abaixo foi realizado na seguinte rota: /movies/2.
Corpo da requisição: |
---|
{
"name": "Matrix 2"
}
Resposta do servidor: |
---|
Status code: 200 OK. |
{
"id": 2,
"name": "Matrix 2",
"category": "Ficção",
"duration": 120,
"price": 35
}
Rota de deleção de filme. Deve ser possível deletar um filme pelo id. O exemplo abaixo foi realizado na seguinte rota: /movies/1.
Resposta do servidor: |
---|
Status code: 204 NO CONTENT. |