Giter Site home page Giter Site logo

desafio_api_starwars's Introduction

DESAFIO API STAR WARS B2W - PEDRO TEIXEIRA BISOGNIN

Índice

  1. Sobre o projeto
  2. Tecnologias utilizadas
  3. Configurando a API
  4. Efetuando testes
  5. Funcionalidades
    1. Inserindo um planeta
    2. Listando todos os planetas
    3. Fazendo busca por ID
    4. Fazendo busca por NOME
    5. Deletando um planeta
  6. Considerações finais

    O objetivo deste projeto é criar uma API rest que armazenará dados como nome de um planeta, clima e terreno. Retornando também a quantidade de aparições de cada planeta nos filmes de Star Wars registrada na API SWAPI. Esse projeto será consumido por um jogo criado pela B2W que aproveitará das informações da franquia.

    Para o presente projeto foi utilizado a linguagem Java na sua versão 8, Spring Boot 2.0 e a IDE Eclipse modificada para o framework Spring Boot(Spring Tools Suite). Para a persistência dos dados foi utilizado o banco de dados não relacional MongoDB e para testes da api o Postman junto com o framework JUNIT.

    Para utilizar o projeto deverá ser instalado o Java SDK 8, o Eclipse, preferencialmente modificado para o Spring Boot(Spring Tools Suite) e o MongoDB Community Server baseado em seu sistema operacional.     Após isso Efetuar o download do projeto e inserir o mesmo no diretorio raiz do seu workspace do Eclipse.

    NO MAVEN

    Primeiramente instalar o Apache Maven e setar suas variaveis de ambiente corretamente, acessar a pasta raiz do projeto pelo prompt, executar o comando "mvn package", aguardar baixar as dependências, aguardar executar os testes automatizados e ao terminar de buildar o projeto acessar na pasta raiz a pasta "target" lá estará o jar responsavel pela api, basta executa-lo junto com o mongodb que a api estará rodando em segundo plano, utilize o postman para fazer testes mais facilmente.

    NO ECLIPSE

    Após importar o projeto, executar o mongoDB e dar Run em Spring Boot App no Eclipse.
    Pronto, a API já estará funcionando se o SWAPI estiver online, caso contrário a API retornará um erro 503 indicando que o SWAPI está fora do ar.

    Obs1: A propria API gera automaticamente o banco vazio no MongoDB caso não exista.
    Obs2: Se ocorrer algum problema da porta default, você poderá entrar em application.properties e mudar server.port para alguma outra porta que desejar.
    Obs3: Para finalizar a execução do projeto buildado no maven abra o prompt, digite o comando "netstat -a -n -o" procure o processo que está utilizando a porta que você configurou ex: "8080", pegue sua Pid e digite "taskkill -f -im "NÚMERO DO PID"".

    Com o Eclipse aberto, ir em src/test/Java e rodar o projeto com JUNIT, o sistema efetuará alguns testes de integração e alguns testes unitários, retornando verde se tudo deu certo ou vermelho se algo deu errado.(Normalmente quando você builda o projeto com mvn package ele já efetua os testes sozinho)

    Vejamos algumas funcionalidades da API, os exemplos estão considerando a porta padrão 8080:

    Para inserir um planeta deve ser feita uma requisição post em json para o endpoint "/planetas".

    Ex: http://localhost:8080/planetas

{
   "nome": "Yavin IV",
   "clima": "Frio",
   "terreno": "jungle, rainforests"
}

    Será criado um novo planeta no banco de dados ao qual a ID será gerada automaticamente, não importando se o usuário setar uma id na hora da inserção. Se for inserido um nome, clima ou terreno com caractere vazio ou null na API, ela retornara o erro 400 de requisição inválida.

    Um planeta que não apareceu nos filmes também pode ser criado, porém seu numero de aparições será automaticamente 0.

    Para listar todos os planetas basta fazer uma solicitação get para o endpoint "/planetas".

    Ex: http://localhost:8080/planetas

    Será retornado a id dos planetas, seu nome, seu clima, terreno e aparições em filmes no formato json. As aparições dos planetas são atualizadas a cada solicitação get, para caso haja alguma alteração no banco de dados do SWAPI ele retorne as aparições atualizadas.

    Para fazer uma busca por id você deverá fazer uma solicitação get para o endpoint "/planetas/" junto com a id que você quer pesquisar.

    Ex: http://localhost:8080/planetas/5afcf2bf1d5bad0100e51bda

    Caso seja inserida uma id inválida, será retornado o erro 404 não encontrado.

    Para fazer uma busca por nome você deverá fazer uma solicitação get para o endpoint "/planetas/buscanome?nome=" junto com o nome codificado que você quer pesquisar.

    Para codificar o valor que você quer, você pode abrir seu navegador, ir em ferramentas de desenvolvedor, depois console e digitar "encodeURIComponent("Nome do planeta")" o console retornará o nome do planeta codificado como no exemplo abaixo.

    Depois basta copiar o código gerado e inserir no final do endpoint informado acima o ""/planetas/buscanome?nome=".

    Ex: http://localhost:8080/planetas/buscanome?nome=Yavin%20IV

    Para deletar um planeta basta fazer uma solicitação delete para o endpoint "/planetas/" indicando a ID do planeta no final do endpoint.

    Ex: http://localhost:8080/planetas/1

    Caso esse planeta não exista ele retornará o erro 404 não encontrado.

    API criada e documentada por Pedro Teixeira Bisognin, espero que gostem e que a força esteja com voces!!!

desafio_api_starwars's People

Contributors

pedroteixeirabisognin avatar

Stargazers

Rodrigo de Brito de Oliveira Cabral avatar

Watchers

James Cloos 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.