O [Movie Challenge] disponibiliza uma API REST para que seus usuários possam trocar informações sobre os filmes que assistiram e sobre os que ainda desejam assistir.
Recursos disponíveis para acesso via API:
- A API utiliza banco de dados em memória, não sendo necessário a instalação do mesmo.
- Ao iniciar a aplicação a API irá popular a base de dados com algumas entradas para teste. O arquivo está no diretório
src/main/resources/data.sql
- Usuario padrão pré cadastrado: username
diego@email.com
senha:123456
- Para acessar o Banco de dados utilize o link: http://localhost:8080/movie/api/h2-console/login.jsp
- Dados para acesso
JDBC URL: jdbc:h2:mem:movie-challenge
User Name: sa
Requisições para a API devem seguir os padrões:
Método | Descrição |
---|---|
GET |
Retorna informações de um ou mais registros. |
POST |
Utilizado para criar um novo registro. |
PUT |
Atualiza dados de um registro ou altera sua situação. |
DELETE |
Remove um registro do sistema. |
Nossa API utiliza [basic Auth] como forma de autenticação/autorização.
Para utilizar a API através, você precisará utilizar uma das seguintes opções:
-
Utilizar um dos usuários pré-cadastrado na base de dados:
-
Cadastrar um
email
,senha
e definir umnome
de usuário, utilizados na solicitação de acesso;
-
Request (application/json) (
POST
)-
Body
{ "nome": "diego", "email": "diego@email.com", "senha": "123456" }
-
Para realizar o login
deve-se informa o e-mail
e a senha
.
Os filmes que podem ser consultados e adicionado nas listas.
http://localhost:8080/movie/api/filme/cave
-
Parameters
- titulo (required, titulo,
cave
) ... Título do filme
- titulo (required, titulo,
-
Response 200 (application/json)
-
Body
{ "imdbRating": "4.2", "imdbID": "tt4915318", "Title": "Cave", "Year": "2016", "Released": "02 Sep 2016", "Genre": "Adventure, Crime, Thriller", "Director": "Henrik Martin Dahlsbakken", "Poster": "https://m.media-amazon.com/images/M/MV5BMDRlNDc1MzktMjE2Yy00MDJkLWE2MzQtMmVhZThkZDgwNzQ5XkEyXkFqcGdeQXVyMzE1NjE5NDA@._V1_SX300.jpg" }
-
-
Response 204 (application/json)
Cadastra um novo usuário no sistema
http://localhost:8080/movie/api/usuario/cadastrar
-
Attributes (object)
- nome: nome do usuário (string, required)
- email: email do usuario que será utilizado para realizar o login (string, required)
- senha: senha do usuário (string, required)
-
Request (application/json)
-
Body
{ "nome": "user_1", "email": "user_1@email.com", "senha": "123456" }
-
-
Response 200 (application/json)
Cria, consulta e exclui uma avaliação um filme com nota
e estrela
http://localhost:8080/movie/api/filme/avaliar/avaliacoes-por-filme/1
-
Parameters
- idFilme (required, idFilme,
1
) ... ID do filme
- idFilme (required, idFilme,
-
Response 200 (application/json)
-
Body
[ { "idAvaliacao": 1, "nota": 10, "estrela": 5, "status": "PUBLICO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "filme": { "idFilme": 1, "titulo": "Sonic", "imdbID": "tt2622500" } } ]
-
http://localhost:8080/movie/api/filme/avaliar
-
Parameters
- nota (required, number,
8
) ... Nota do filme - estrela (required, number,
5
) ... Estrelas para o filme - status (required, string,
PRIVADO
) ... Status PUBLICO ou PRIVADO - filme (object)
- imdbID (required, string,
tt0114723
) ... Código imdb do filme
- imdbID (required, string,
- nota (required, number,
-
Request (application/json)
-
Body
{ "nota": 8, "estrela": 5, "status": "PRIVADO", "filme": { "imdbID": "tt0114723" }
-
}
-
Response 200 (application/json)
-
Body
{ { "idAvaliacao": 6, "nota": 8, "estrela": 5, "status": "PRIVADO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "filme": { "idFilme": 5, "titulo": "Trial by Fire", "imdbID": "tt0114723" } } }
-
http://localhost:8080/movie/api/filme/avaliar/excluir/2
-
Parameters
- idAvaliacao (required, string,
2
) ... Id da avaliação
- idAvaliacao (required, string,
-
Response 200 (application/json) Excluído com sucesso
Cria e consulta grupos de discussão
http://localhost:8080/movie/api/grupo/criar
-
Parameters
- usuarioId (required, number,
1
) ... Id do usuário proprietário do grupo - titulo (required, string,
Grupo dos star wars
) ... Título do grupo - status (required, string,
PUBLICO
) ... Status PUBLICO
- usuarioId (required, number,
-
Request (application/json)
-
Body
{ "usuarioId": 1, "titulo": "Grupo dos star wars", "status": "PUBLICO" }
-
-
Response 200 (application/json)
-
Body
{ "idGrupoDebate": 17, "titulo": "Grupo dos star wars", "status": "PUBLICO", "usuariosAutorizados": null, "autor": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" } }
-
http://localhost:8080/movie/api/grupo/criar
-
Parameters
- usuarioId (required, number,
1
) ... Id do usuário proprietário do grupo - titulo (required, string,
Grupo dos star wars
) ... Título do grupo - status (required, string,
PRIVADO
) ... Status PRIVADO - usuariosAutorizados (required, array, [1, 2, 3]) ... Array de ID de usuários autorizados
- usuarioId (required, number,
-
Request (application/json)
-
Body
{ "usuarioId": "1", "titulo": "Grupo Criado pela api rest", "status": "PRIVADO", "usuariosAutorizados": [1, 2,3] }
-
-
Response 200 (application/json)
-
Body
{ "idGrupoDebate": 18, "titulo": "Grupo Criado pela api rest", "status": "PRIVADO", "usuariosAutorizados": [ { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, { "idUsuario": 2, "nome": "Juliana", "email": "juliana@email.com" }, { "idUsuario": 3, "nome": "Vanessa", "email": "vanessa@email.com" } ], "autor": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" } }
-
http://localhost:8080/movie/api/grupo/buscar-grupos-publicos
- Response 200 (application/json)
-
Body
[ { "idGrupoDebate": 1, "titulo": "Critica De filme", "status": "PUBLICO", "usuariosAutorizados": [], "autor": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" } }, { "idGrupoDebate": 5, "titulo": "Critica De filme", "status": "PUBLICO", "usuariosAutorizados": [], "autor": { "idUsuario": 2, "nome": "Juliana", "email": "juliana@email.com" } } ]
-
Cria, atualiza e consulta uma lista
http://localhost:8080/movie/api/lista-filme/participante
- Response 200 (application/json)
-
Body
[ { "idLista": 1, "nomeLista": "Quero Assistir", "status": "PRIVADO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "listaFilmes": [ { "idFilme": 1, "titulo": "Sonic", "imdbID": "tt2622500" }, ] }, { "idLista": 2, "nomeLista": "Favoritos", "status": "PUBLICO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "listaFilmes": [ { "idFilme": 2, "titulo": "Star Wars: Episode IV - A New Hope", "imdbID": "tt0076759" }, { "idFilme": 8, "titulo": "Inside Out", "imdbID": "tt2096673" } ] } ]
-
http://localhost:8080/movie/api/lista-filme/
- Response 200 (application/json)
-
Body
[ { "idLista": 1, "nomeLista": "Quero Assistir", "status": "PUBLICO", "usuario": { "idUsuario": 3, "nome": "Vanessa", "email": "vanessa@email.com" }, "listaFilmes": [ { "idFilme": 1, "titulo": "Sonic", "imdbID": "tt2622500" }, ] }, { "idLista": 2, "nomeLista": "Favoritos", "status": "PUBLICO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "listaFilmes": [ { "idFilme": 2, "titulo": "Star Wars: Episode IV - A New Hope", "imdbID": "tt0076759" }, { "idFilme": 8, "titulo": "Inside Out", "imdbID": "tt2096673" } ] } ]
-
Retorna os filmes da lista filtrados por 'ano' ou 'diretor' (Read) [GET /filtrar/{tipoFiltro}/{filtro}/{idLista}]
http://localhost:8080/movie/api/lista-filme/filtrar/ano/2013/1
-
Parameters
- tipoFiltro (required, string,
ano
) ... Parâmetro para o filtro (ano ou diretor) - filtro (required, string,
2013
) ... Ano a ser filtrado - idLista (required, string,
1
) ... ID da lista
- tipoFiltro (required, string,
-
Response 200 (application/json)
-
Body
[ { "imdbRating": "4.5", "imdbID": "tt2622500", "Title": "Sonic", "Year": "2013", "Released": "05 Jan 2013", "Genre": "Short, Action, Adventure, Fantasy, Sci-Fi", "Director": "Eddie Lebron", "Poster": "https://m.media-amazon.com/images/M/MV5BZWJkMTU5MjUtNGFmOC00NDFmLTk3NGYtMDgzMDY1NmI5NmFiXkEyXkFqcGdeQXVyMzYzNzc1NjY@._V1_SX300.jpg" } ]
-
http://localhost:8080/movie/api/lista-filme/nova-lista
-
Parameters
- nomeLista (required, string,
Assistindo
) ... Parâmetro para o filtro (ano ou diretor) - status (required, string,
PRIVADO
) ... Status PUBLICO ou PRIVADO
- nomeLista (required, string,
-
Request (application/json)
-
Body
{ "nomeLista" : "Assistindo", "status" : "PRIVADO" }
-
-
Response 200 (application/json)
-
Body
{ "idLista": 20, "nomeLista": "Assistindo", "status": "PRIVADO", "usuario": { "idUsuario": 2, "nome": "Juliana", "email": "juliana@email.com" }, "listaFilmes": [] }
-
http://localhost:8080/movie/api/lista-filme/adicionar-filme/1
-
Parameters
- idLista (required, number,
1
) ... ID la lista - imdbID (required, string,
tt2096673
) ... imdb do filme a ser inserido
- idLista (required, number,
-
Request (application/json)
-
Body
{ "imdbID": "tt2096673" }
-
-
Response 200 (application/json)
-
Body
{ "idLista": 1, "nomeLista": "Quero Assistir", "status": "PUBLICO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "listaFilmes": [ { "idFilme": 8, "titulo": "Inside Out", "imdbID": "tt2096673" } ] }
-
http://localhost:8080/movie/api/lista-filme/alterar-visibilidade/1
-
Parameters
- idLista (required, number,
1
) ... ID la lista - status (required, number,
PRIVADO
) ... Status PUBLICO ou PRIVADO
- idLista (required, number,
-
Request (application/json)
-
Body
{ "status": "PRIVADO" }
-
-
Response 200 (application/json)
-
Body
{ "idLista": 1, "nomeLista": "Quero Assistir", "status": "PRIVADO", "usuario": { "idUsuario": 1, "nome": "Diego", "email": "diego@email.com" }, "listaFilmes": [ { "idFilme": 8, "titulo": "Inside Out", "imdbID": "tt2096673" } ] }
-