- Sobre a API
- Tecnologias utilizadas
- Como configurar a máquina para utilização da API
- Funcionalidades
- Rotas
- 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.
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.
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
}
]
}
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
}
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
}
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.
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