Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thepabloaguilar/planets-rest-java
https://github.com/thepabloaguilar/planets-rest-java
Last synced: about 10 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/thepabloaguilar/planets-rest-java
- Owner: thepabloaguilar
- Created: 2019-07-11T01:45:10.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2019-07-14T18:43:24.000Z (about 5 years ago)
- Last Synced: 2023-09-25T03:32:36.270Z (about 1 year ago)
- Language: Java
- Size: 188 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Planets
Conjunto de APIs para realizar o gerenciamento de Planetas que aparecem na franquia [Star Wars](https://www.starwars.com) com um integração com a API Publica de dados da franquia, [SWAPI](https://swapi.co).
## Tecnologias Utilizadas
* [**Java 8**](https://www.java.com/pt_BR/download/faq/java8.xml)
* [**MongoDB**](https://www.mongodb.com)
* [**Docker**](https://www.docker.com)
* [**Docker Compose**](https://docs.docker.com/compose/)
* [**Swagger UI**](https://swagger.io/tools/swagger-ui/)
## Subindo o serviço
### Requisitos
* Rodar dentro de um container:
* [**Docker**](https://www.docker.com)
* [**Docker Compose**](https://docs.docker.com/compose/)* Rodar direto na máquina:
* [**Gradle**](https://gradle.org) >= 5.4.1
* [**Java 8**](https://www.java.com/pt_BR/download/faq/java8.xml)### Preparando e Rodando o Serviço
**Subindo com o docker**
1. Build do Projeto:
```sh
make buildgradle
```
2. Build da Imagem do container:```sh
make buildimage
```3. Subir o Serviço juntamente com o MongoDB:
```sh
make drun
```4. Para para a execução do serviço:
```sh
make dstop
```**Subindo direto na máquina**
1. Build do Projeto:
```sh
make buildgradlelocal
```2. Subir o serviço:
```sh
make jrun
```Obs.: Utilizando desta forma o MongoDB deverá ser iniciado separadamente, para subir utilizando o ambiente esperado pela aplicação, basta executar o comando:
```sh
make runmongo
```
Uma vez que o serviço esteja funcionando basta utilizar, as rotas serão expostas em:
[http://localhost:6606](http://localhost:6606/)
E a documentação em:
[http://localhost:6606/swagger-ui.html](http://localhost:6606/swagger-ui.html)
Utilizando a interface da Documentação, é possivel interagir com todas as rotas disponiveis e ver os objetos que recebem/retornam.
![Swagger Home](/images/swagger_homescreen.png "Swagger Home")
#### Rotas
* **GET** /planets: Devolve uma lista paginada com os planetas persistidos até o momento, ela também aceita uma *QueryString*, **name**, que por sua vez possibilita a procura por planetas utilizando o nome. Para navegar entre as páginas deverá ser utilizado as *QueryString*, **pageNumber** e **pageSize**.
Obs.: A primeira página é a **0**, a segunda é a **1** e assim por diante.
* **POST** /planets: Persiste um planeta novo, abaixo é possível ver o objeto esperado para ser persistido.
```json
{
"name": "string",
"terrain": "string",
"climate": "string"
}
```* **GET** /planets/{planetId}: Buscar um planeta especifico passando seu ID como *PathParameter*.
* **DELETE** /planets/{planetId}: Exclui um planet especifico, recebendo o ID como *PathParameter*.
* **GET** /swapi/planets: Retorna uma lista página diretamente do seriço SWAPI.
* **GET** /health/status: Rota de Healthcheck da aplicação.
### Número de Filmes por Planeta
Na hora de criar um novo filme é feita uma requisição para [SWAPI](https://swapi.co/), se houver algum problema de conexão esse atributo ficará `null`. Se o serviço retornar mais de um Planeta durante a busca, o atributo será setado como `-1`. Se o serviço devolver apenas um planeta porém o nome for divergente do nome passado na request o atributo será setado como `-1`.
Só irá ser valido a contagem, se o serviço **SWAPI** retornar apenas um planeta e que o nome seja igual ao enviado na request para ser salvo.
### Pontos de Melhoria
* Utilizar o [Feign](https://github.com/OpenFeign/feign) ao invés do [Retrofi](https://square.github.io/retrofit/)
* Escrever Testes