Projeto do módulo 4, do curso de Desenvolvedora Web Full Stack, da Kenzie Academy Brasil. A API simula uma lista de compras, onde é possível criar, listar, atualizar e deletar listas e items de um banco de dados.
Método | Endpoint | Responsabilidade |
---|---|---|
POST | /purchaseList | Criar uma nova lista de compras |
GET | /purchaseList | Listar todas as listas de compras |
GET | /purchaseList/ | Listar uma lista de compras específica |
PATCH | /purchaseList// | Atualiza os dados de um item da lista |
DELETE | /purchaseList// | Deleta um item da lista |
DELETE | /purchaseList/ | Deleta uma lista |
Esse serviço precisa possuir uma API REST para que os demais serviços consigam criar, listar, atualizar e deletar listas de compras e items de um banco de dados. O banco de dados deve ser volátil, um array que seja zerado toda vez que a aplicação reiniciar.
- Deve ser possível criar uma lista contendo os seguintes dados:
- id: número, gerado automaticamente na criação.
- listName: string.
- data: Array de objetos de itens.
- cada item de data deverá conter:
- name: string.
- quantity: string.
- cada item de data deverá conter:
Regras de negócio
- Caso de sucesso:
- Retorno: um objeto contendo os dados da lista criada
- Status: 201 CREATED.
Exemplo de retorno:
{
"id": 1,
"listName": "feira",
"data": [
{
"name": "banana",
"quantity": "1 cacho"
},
{
"name": "maçã",
"quantity": "6 unidades"
},
{
"name": "mamão",
"quantity": "1 unidade"
}
],
- Não deve ser possível criar uma lista ou um item com um dado que não esteja dentro dos indicados anteriormente.
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 400 BAD REQUEST.
Exemplo de retorno:
{
"message": "Required fields are: \"name\" and \"quantity\""
}
- Não deve ser possível criar uma lista ou item caso um dos dados não seja do tipo esperado.
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 400 BAD REQUEST.
Exemplo de retorno:
{
"message": "The list name need to be a string"
}
- Deve ser possível listar todas as listas armazenadas no banco de dados.
Regras de negócio
- Caso de sucesso:
- Retorno: um array contendo todas as listas no banco.
- Status: 200 OK.
- Exemplo de retorno:
[
{
"id": 1,
"listName": "feira",
"data": [
{
"name": "abacaxi",
"quantity": "1 unidade"
},
{
"name": "maçã",
"quantity": "6 unidades"
},
{
"name": "mamão",
"quantity": "1 unidade"
}
]
}
]
- Deve ser possível receber apenas uma lista com base no seu id.
Regras de negócio
- Caso de sucesso:
- Retorno: um objeto contendo a lista especificada na url.
- Status: 200 OK.
- Exemplo de retorno:
{
"id": 1,
"listName": "feira",
"data": [
{
"name": "abacaxi",
"quantity": "1 unidade"
},
{
"name": "maçã",
"quantity": "6 unidades"
},
{
"name": "mamão",
"quantity": "1 unidade"
}
]
}
- Não deve ser possível obter uma lista que não existe.
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "List with id \"182476281\" does not exist"
}
- Deve ser possível atualizar um item com base em seu nome e no id da lista a qual o item pertence.
Regras de negócio
-
Os dados permitidos para atualização são:
- name: string.
- quantity: string.
-
Caso de sucesso:
- Retorno: um objeto contendo a lista especificada na url.
- Status: 200 OK.
Exemplo de retorno:
{
"name": "abacaxi",
"quantity": "1 unidade"
}
- Não deve ser possível atualizar um item que não exista na lista indicada:
- Retorno: Um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "Item with name \"iahs923u41js\" does not exist",
}
- Não deve ser possível atualizar um item de uma lista que não existe:
- Retorno: Um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "List with id \"182476281\" does not exist"
}
- Não deve ser possível atualizar uma lista ou um item com um dado que não esteja dentro dos indicados anteriormente:
- Retorno: Um objeto contendo uma mensagem de erro.
- Status: 400 BAD REQUEST.
Exemplo de retorno:
{
"message": "Updatable fields are: \"name\" and \"quantity\""
}
- Não deve ser possível atualizar uma lista ou item caso um dos dados não seja do tipo esperado:
- Retorno: Um objeto contendo uma mensagem de erro.
- Status: 400 BAD REQUEST.
Exemplo de retorno:
{
"message": "The list name need to be a string"
}
Regras de negócio
-
Deve ser possível deletar um item especificado pelo seu nome e pelo id da lista a qual pertence.
-
Caso de sucesso:
- Retorno: nenhum dado deve ser retornado.
- Status: 204 NO CONTENT.
-
Não deve ser possível deletar um item de uma lista que não existe:
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "List with id \"182476281\" does not exist"
}
- Não deve ser possível deletar um item que não exista na lista indicada:
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "Item with name \"iahs923u41js\" does not exist"
}
Regras de negócio
-
Deve ser possível deletar uma lista através do seu id.
-
Caso de sucesso:
- Retorno: nenhum dado deve ser retornado.
- Status: 204 NO CONTENT.
-
Não deve ser possível deletar um item de uma lista que não existe:
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "List with id \"182476281\" does not exist"
}
- Não deve ser possível deletar um item que não exista na lista indicada:
- Retorno: um objeto contendo uma mensagem de erro.
- Status: 404 NOT FOUND.
Exemplo de retorno:
{
"message": "Item with name \"iahs923u41js\" does not exist"
}