Skip to content

Latest commit

 

History

History
184 lines (152 loc) · 4.5 KB

README.md

File metadata and controls

184 lines (152 loc) · 4.5 KB

B2W for Women - Desafio API Star Wars

Índice

  1. Sobre a API
  2. Tecnologias utilizadas
  3. Como configurar a máquina para utilização da API
  4. Funcionalidades
  5. Rotas
  6. Testes

Esta é uma API REST que armazena dados dos planetas (nome, clima e terreno). A API do Star Wars é consultada para retornar a quantidade de aparições em dos planetas nos filmes da franquia.

  • Java 8
  • Spring Boot
  • Maven
  • Mongo DB
  • Testes com Rest Assured / Junit / Postman

O primeiro passo é realizar a instalação do Java SE JDK 8, após isso realizar a instalação do STS 4 (Spring Tool Suite 4) e o MongoDB (deixar o MongoDB rodando como serviço).

A API pode ser acessada pelo caminho http://localhost:8080

Tipo de Requisição Caminho Descrição
GET /api/planetas/ Busca todos os planetas
GET /api/planetas/nome/{nome} Busca planeta pelo nome
GET /api/planetas/id/{id} Busca planeta pelo ID
POST /api/planetas Insere um planeta
PUT /api/planetas/{id} Modifica um planeta pelo ID
DELETE /api/planetas/{id} Deleta um planeta pelo ID

As requisições POST e PUT necessitam enviar um JSON com as informações.

Inserindo um planeta

Requisição: POST
Caminho: http://localhost:8080/api/planetas
Body:

{
    "nome": "Geonosis",
    "clima": "Árido",
    "terreno": "Montanhas"
}

Exemplo de resposta:

{
    "id": "5ed3f4274c04247733a82684",
    "nome": "Geonosis",
    "clima": "Árido",
    "terreno": "Montanhas",
    "numAparicoes": 1
}

Todos os valores são obrigatórios. Caso o JSON esteja com algum item faltando, a API retornará erro 400.

Buscar todos os planetas

Requisição: GET
Caminho: http://localhost:8080/api/planetas
Body: Não necessário
Exemplo de resposta:

{
    "count": 3,
    "results": [
        {
            "id": "5ed3df914c04247733a8267e",
            "nome": "Endor",
            "clima": "Temperado",
            "terreno": "Florestas",
            "numAparicoes": 1
        },
        {
            "id": "5ed3df974c04247733a82683",
            "nome": "Naboo",
            "clima": "Temperado",
            "terreno": "Florestas, Montanhas",
            "numAparicoes": 4
        },
        {
            "id": "5ed3f4274c04247733a82684",
            "nome": "Geonosis",
            "clima": "Árido",
            "terreno": "Montanhas",
            "numAparicoes": 1
        }
    ]
}

Buscar planetas pelo nome

Requisição: GET
Caminho:http://localhost:8080/api/planetas/nome/{nome}
Body: Não necessário
Exemplo de resposta:

{
    "id": "5ed3f4274c04247733a82684",
    "nome": "Geonosis",
    "clima": "Árido",
    "terreno": "Montanhas",
    "numAparicoes": 1
}

Buscar planetas pelo ID

Requisição: GET
Caminho:http://localhost:8080/api/planetas/id/{id}
Body: Não necessário
Exemplo de resposta:

{
    "id": "5ed3f4274c04247733a82684",
    "nome": "Geonosis",
    "clima": "Árido",
    "terreno": "Montanhas",
    "numAparicoes": 1
}

Modificar um planeta pelo ID

Requisição: PUT
Caminho:http://localhost:8080/api/planetas/{id}
Body:

{
    "nome": "Geonosis",
    "clima": "Árido",
    "terreno": "Montanhas"
}

Exemplo de resposta:

{
    "id": "5ed3df914c04247733a8267e",
    "nome": "Geonosis",
    "clima": "Árido",
    "terreno": "Montanhas",
    "numAparicoes": 1
}

Caso já exista um planeta com o mesmo nome ou o ID não exista, a API retornará erro 400.

Deletar um planeta pelo ID

Requisição: DELETE
Caminho:http://localhost:8080/api/planetas/{id}
Body: Não necessário
Exemplo de resposta:

{
    "message": "O Planeta Naboo foi deletado"
}

Os testes estão no caminho: src/test/java/com/b2w/api/PlanetasCrudTests.java