GithubHelp home page GithubHelp logo

moraveis / premio-pior-filme Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 2.0 15.53 MB

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

Java 100.00%

premio-pior-filme's Introduction

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.

premio-pior-filme's People

Contributors

moraveis avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.