Giter Club home page Giter Club logo

movies-api's Introduction

Movies API

Descrição

Este projeto consiste em numa API REST de filmes. A API foi desenvolvida em Pythom com o framework Flask e banco de dados MongoDB. A API suporta operações CRUD de filmes além de registro e autorização de usuário, através de token JWT, e importação de filme através de integração com a API da OMDb.

Tecnologias

  • Python Python 3.5.2;
  • pip 19.0.3;
  • Flask 1.0.2;
  • Mongo DB 4.0.7;

Instalação local

Siga os passos:

  1. Instalação das dependências Python através do comando abaixo:
  • pip install -r requirements.txt

Substituir pip por pip3 quando o primeiro não estiver atrelado a versão 3 do Python.

  1. Criar um banco movies_api no MongoDB (sem autentificação) e as collections users e movies;

  2. Copiar o conteúdo do arquivo .env.example para um novo arquivo .env

  3. Executar o comando abaixo para iniciar a aplicação:

  • python server.py

Por padrão a aplicação será iniciada na porta 5000.

Funcionamento

Para utilizar a aplicação é necessário primeiro registrar um usuário no banco de dados através da rota /api/register. Feito isto é possível utilizar as credencias deste usuário para receber um token JWT de autorização através da rota /api/login. Este token expira em 1h e é utilizado header da requisição com a chave Authorization em endpoints que exigem autorização.

Endpoints

  1. GET /api/register - Cria um usuário;

Campos obrigatórios - Formato JSON:

  • name (String) - nome do usuário,
  • email (String) - e-mail do usuário,
  • password (String) - senha do usuário.
  1. POST /api/login - Recebe o token JWT para utilizar nos endpoints que exigem autorização;

Campos obrigatórios - Formato JSON:

  • email (String) - e-mail do usuário,
  • password (String) - senha do usuário.
  1. GET /api/movies - Requer autorização - Lista os filmes;
  2. POST /api/movies - Requer autorização - Cria um filme;

Campos obrigatórios - Formato JSON:

  • title (String) - Título original do filme,
  • brazilian_title (String) - Título do filme no Brasil,
  • year_of_production (Number) - Ano do filme,
  • director (String) - Diretor do filme (pode ser separado por vírgulas quando houver múltiplos),
  • genre (String) - Gênero (pode ser separado por vírgulas quando houver múltiplos),
  • cast (Array) - Lista do elenco

Campos obrigatórios de um item no array cast:

  • role (String) - nome da personagem,
  • name (String) - nome do ator/atriz.
  1. GET /api/movies/{movie_id} - Requer autorização - Exibe um filme;

Parâmetro movie_id representa o ID do filme no banco de dados.

  1. PUT /api/movies/{movie_id}/update - Requer autorização - Remove um filme;

Parâmetro movie_id representa o ID do filme no banco de dados.

Campos obrigatórios - Formato JSON: Pelo menos um dos campos do item 5.

  1. DELETE /api/movies/{movie_id}/delete - Requer autorização - Remove um filme;

Parâmetro movie_id representa o ID do filme no banco de dados.

  1. GET /api/movies/import-from-omdb/ - Requer autorização - Cria um novo filme com dados do OMDb;

Campos obrigatórios - Formato JSON:

  • movie_id (String) - id do filme na base do IMDb.

Postman

Para testar os endpoints com o Postman é necessário importar os arquivos para collection e environment na pasta postman. Por padrão o endereço base da aplicação é http://localhost:5000 mas é possível especificar outro alterando a variável baseUrl da coleção. Rotas que necessitam autorização utilizam a variável de ambiente token que é definida na rota login. Os endpoints que enviam dados no corpo da requisição possuem exemplos.

Testes

Para executar os testes unitários rode o comando abaixo:

  • python tests.py -v

movies-api's People

Contributors

guizoxxv avatar gustavopiloti 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.