Skip to content

API RESTful para possibilitar a leitura e manutenção da lista de indicados e vencedores da categoria Pior Filme do Golden Raspberry Awards

Notifications You must be signed in to change notification settings

Moraveis/premio-pior-filme

Repository files navigation

Prémio Pior Filme

Prémio Pior Filme (uma categoria do Golden Raspberry Awards) é um projeto desenvolvido para participar do processo seletivo da empresa TexoIT para a vaga de desenvolver Java Web direcionada ao Back End.

O projeto consiste em realizar a leitura de um arquivo .csv contendo os dados do filmes e staff indicados ao prémio permitindo consultar-los e manipular-los.

Para o denvolvimento do projeto foi desenvolvido uma API RESTful responsável pela manulipulação dos dados através dos métodos GET, POST, PUT e DELETE as operações necessária.

Ferramentas Usadas

Como Executar

  • Instalar a IDE NetBeans 8.2 com Java EE 8

  • Instalar o servidor de aplicação Apache Tomcat 8.0

  • Abrir o projeto e selecionar a opção "Limpar e contruir" para que a IDE possa baixar as dependências.

    URL Base: http://localhost:8080/

  • A porta pode ou não mudar dependendo da escolha durante a instalação do servidor de aplicação.

  • O deploy do projeto pode ocorrer de duas maneira: a convencional que é gerar o ".war" e realizar o deploy em um servidor de aplicação externo ou gerar um arquivo ".jar" e utilizar o suporte do Spring encapsular Tomcat.

Erros

Utilizei os status code do protocolo HTTP, disponíveis no header de cada response.

200 OK Tudo funcionou como esperado.

201 OK O Recurso foi criado com sucesso.

400 Bad Request Geralmente, um problema com os parâmetros.

404 Not Found O recurso acessado não existe.

500 Server errors Falha minha, algum erro no servidor.

Recursos

Winners

Permite obter os vencedores de um determinado ano.

Resource URL

GET http://localhost:8080/winners/

Parâmetros

  • Ano - Obrigatório

Exemplo de Requisição

http://localhost:8080/winners/1980

Exemplo de Resposta

[
    {
        "id": 1,
        "year": 1980,
        "title": "Can't Stop the Music",
        "studios": [
            "Associated Film Distribution"
        ],
        "producers": [
            "Allan Carr"
        ],
        "winner": true
    }
]

Years

Permite obter os anos que tiveram mais de um vencedor.

Resource URL

GET http://localhost:8080/years

Parâmetros

  • Nenhum

Exemplo de Requisição

http://localhost:8080/years

Exemplo de Resposta

{
    "years": [
        {
            "year": 1986,
            "winnerCount": 2
        },
        {
            "year": 1990,
            "winnerCount": 2
        },
        {
            "year": 2015,
            "winnerCount": 2
        }
    ]
}

Studios

Permite obter dos estúdios ordernada pelo número de vitórias.

Resource URL

GET http://localhost:8080/studios

Parâmetros

  • Nenhum

Exemplo de Requisição

http://localhost:8080/studios

Exemplo de Resposta

{
    "studios": [
        {
            "name": "Paramount Pictures",
            "winCount": 6
        },
        {
            "name": "Columbia Pictures",
            "winCount": 6
        },
        {
            "name": "Warner Bros.",
            "winCount": 5
        }
    ]
}

Producers

Obter o produtor com maior intervalo entre dois prêmios, e o que obteve dois prêmios mais rápido.

Resource URL

GET http://localhost:8080/producers

Parâmetros

  • Nenhum

Exemplo de Requisição

http://localhost:8080/producers

Exemplo de Resposta

{
    "min": [
        {
            "producer": "Producer Name", "interval": 9,
            "previousWin": 2018, "followingWin": 2019
        }
    ],
    "max": [
        {
            "producer": "Producer Name", "interval": 99,
            "previousWin": 1900, "followingWin": 1999
        }
    ]
}

Movies

Permiter deletar um filme da lista desde que este não seja um vencedor.

Resource URL

DELETE http://localhost:8080/movies

Parâmetros

  • Id - Obrigário para localizar o filme a ser excluído.

Exemplo de Requisição

http://localhost:8080/movies/1

Exemplo de Resposta

204 OK Tudo funcionou porém não há informação a ser retornada.

403 Not Found Operação não permitida.

Teste Unitario

A realização dos testes unitários durante o devenvolvimento de uma API nos ajuda a entender e validar os rescursos e dados.

As seguintes validações devem ser consideradas:

  • Validar os dados que retorna.
  • Validar os headers da resposta
  • Validar se a resposta está de acordo.
  • Validar se o content-type alterado, o comportamento continua o mesmo.
  • Validar se a estrutura do JSON ou XML está correta.
  • Validar se quando der erro o status está de acordo com os códigos de erro.
  • Validar se uma requisição com informações incompleta, qual será o comportamento da requisição.
  • Testar o tempo de resposta de uma requisição

Os testes implementados para a API encontranm-se na classe [MovieControllerTest.java] e uma vez que estes são testes voltados para testar o correto funcionadmento dos recurso da API, utilizamos de informação ficticias que nos permite simular os possiveis cenários.

Para simular os casos basta alterar as informações ali presentes e executar a classe que irá inicializar apenas os recursos necessários ao final da execução será apresentado o resultado para cada um dos testes, no caso de falha será indicado a causa.

About

API RESTful para possibilitar a leitura e manutenção da lista de indicados e vencedores da categoria Pior Filme do Golden Raspberry Awards

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages