Projeto final das disciplinas Backend Frameworks e Projeto de Banco de Dados 2024.1
- Fillipe Miranda - 03341457
- Breno Ferraz - 03338074
- Gabriel Padilha - 03338824
TEMA LIVRE
Construa uma API com, no mínimo, 5 tabelas.
Construa CRUD total para as 5 tabelas.
O seu projeto deve ter pelo menos 5 consultas extras (Além do CRUD)
Front no Postman
Esta é uma API construída com Flask que permite gerenciar usuários, filmes, resenhas, avaliações e favoritos.
Esta documentação fornece uma visão geral dos endpoints disponíveis e como utilizá-los.
-
Clone o repositório:
git clone https://github.com/famgz/films-log-api.git cd films-log-api
-
Instale as dependências:
pip install -r requirements.txt
-
Execute a aplicação:
cd src flask run
- Em português:
/docs
-
POST
/user
Cria um novo usuário.
Parâmetros da Requisição (form-data):
username
: stringemail
: stringpassword
: string
Resposta:
{ "message": "User criado com sucesso" }
-
GET
/user/{username}
Obter um usuário pelo username.
Resposta:
{ "id": int, "username": string, "email": string, "password": string }
-
PUT
/user/{username}
Atualizar um usuário pelo ID.
Parâmetros da Requisição (form-data):
username
: stringemail
: stringpassword
: string
Resposta:
{ "message": "User atualizado com sucesso" }
-
DELETE
/user/{username}
Excluir um usuário pelo username.
Resposta:
{ "message": "User excluído com sucesso" }
-
GET
/user/{username}/film/all
Obter todos os filmes que o usuário possui algum registro.
Resposta:
[ { "film_id": int, "film_title": string, "favorite": boolean, "rating": number, "review": string } ... ]
-
GET
/user/{username}/film/{film_id}
Obter informações de um filme com os registros do usuário.
Resposta:
{
"film_id": int,
"film_title": string,
"favorite": boolean,
"rating": number,
"review": string
}
-
POST
/film
Cria um novo filme.
Parâmetros da Requisição (form-data):
title
: stringyear
: intdirector
: stringduration
: int
Resposta:
{ "message": "Filme adicionado com sucesso" }
-
GET
/film/all
Obter todos os filmes.
Resposta:
[ { "id": int, "title": string, "year": int, "director": string, "duration": int }, ... ]
-
GET
/film/<int:id>
Obter um filme pelo ID.
Resposta:
{ "id": int, "title": string, "year": int, "director": string, "duration": int }
-
PUT
/film/<int:id>
Atualizar um filme pelo ID.
Parâmetros da Requisição (form-data):
title
: stringyear
: intdirector
: stringduration
: int
Resposta:
{ "message": "Filme atualizado com sucesso" }
-
DELETE
/film/<int:id>
Excluir um filme pelo ID.
Resposta:
{ "message": "Filme excluído com sucesso" }
-
POST
/user/{username}/film/{film_id}/review
Cria uma nova resenha para um filme por um usuário.
Parâmetros da Requisição (form-data):
review
: string
Resposta:
{ "message": "Review adicionado com sucesso" }
-
GET
/user/{username}/film/{film_id}/review
Obter uma resenha para um filme por um usuário.
Resposta:
{ "user_id": int, "film_id": int, "review": string }
-
PUT
/user/{username}/film/{film_id}/review
Atualizar uma resenha para um filme por um usuário.
Parâmetros da Requisição (form-data):
review
: string
Resposta:
{ "message": "Review atualizado com sucesso" }
-
DELETE
/user/{username}/film/{film_id}/review
Excluir uma resenha para um filme por um usuário.
Resposta:
{ "message": "Review excluído com sucesso" }
-
POST
/user/{username}/film/{film_id}/rating
Cria uma nova avaliação para um filme por um usuário.
Parâmetros da Requisição (form-data):
rating
: int (entre 1 e 10)
Resposta:
{ "message": "Rating adicionado com sucesso" }
-
GET
/user/{username}/film/{film_id}/rating
Obter uma avaliação para um filme por um usuário.
Resposta:
{ "user_id": int, "film_id": int, "rating": int }
-
PUT
/user/{username}/film/{film_id}/rating
Atualizar uma avaliação para um filme por um usuário.
Parâmetros da Requisição (form-data):
rating
: int (entre 1 e 10)
Resposta:
{ "message": "Rating atualizado com sucesso" }
-
DELETE
/user/{username}/film/{film_id}/rating
Excluir uma avaliação para um filme por um usuário.
Resposta:
{ "message": "Rating excluído com sucesso" }
-
POST
/user/{username}/film/{film_id}/favorite
Adicionar um filme aos favoritos de um usuário.
Resposta:
{ "message": "Favorite adicionado com sucesso" }
-
GET
/user/{username}/film/{film_id}/favorite
Obter um favorito para um filme por um usuário.
Resposta:
{ "user_id": int, "film_id": int, "favorite": boolean }
-
DELETE
/user/{username}/film/{film_id}/favorite
Excluir um favorito para um filme por um usuário.
Resposta:
{ "message": "Favorite excluído com sucesso" }
Sinta-se à vontade para fazer um fork do repositório e enviar pull requests. Para grandes mudanças, abra uma issue primeiro para discutir o que você gostaria de mudar.
Por favor, certifique-se de atualizar os testes conforme apropriado.