Skip to content

renanferr/planets-api

Repository files navigation

Planets API

Coverage Status    Build Status

API para adicionar e listar planetas da franquia Star Wars.

Ao adicionar um novo planeta, a aplicação buscará na SWAPI quantas vezes o mesmo apareceu nos filmes.

O design se baseia em alguns conceitos do Domain-Driver Design, Eric Evans e da Hexagonal Architecture de Alistair Cockburn.

Componentes

Business Core

  • Listing
  • Adding

Adapters

  • Storage
  • HTTP
    • RESTful server
    • Client

Dependências

Database

MongoDB

Ambiente de Desenvolvimento

Docker e docker-compose ou Go.

Go Modules

O gerenciamento de pacotes é feito através de Go Modules no arquivo go.mod. Os módulos utilizados como dependência são:

  • govalidator como helper para validação e tratamento de erros de validação
  • chi como roteador HTTP
  • mongo-driver como driver do MongoDB

Para baixá-las com Go instalado na máquina:

$ go mod download

Como usar

Este repositório provê um ambiente de execução Docker via Dockerfile e docker-compose com todas as dependências e configurações necessárias.

Além disso, possui uma especificação OpenAPI 3 openapi.yml.

Variáveis de Ambiente

Nome Descrição
PORT Porta do servidor HTTP
DB_CONNECTION_URI URI de conexão com MongoDB
DB_TIMEOUT_MS Tempo máximo de transação no MongoDB em milissegundos
PLANETS_API_BASE_URL URL base da API para buscar informações extras de planetas

Docker-Compose

Para executar via docker-compose

$ docker-compose up --build -d

Live Demo

Uma demonstração da aplicação foi implantada no plano grátis do heroku em: https://swapi-golang-rest-api.herokuapp.com

Exemplos de Requisição

Adding Planet

$ curl --request POST \
  --url https://swapi-golang-rest-api.herokuapp.com/api/planets \
  --header 'content-type: application/json' \
  --data '{
  "name": "tatooine",
  "climate": "arid",
  "terrain": "desert"
}'

Getting Planet

$ curl --request GET \
  --url https://swapi-golang-rest-api.herokuapp.com/api/planets/5f99b620ce4200066e7efed4

Listing Planet

$ curl --request GET \
  --url 'https://swapi-golang-rest-api.herokuapp.com/api/planets?page=1&limit=5'

Testes

Testando

$ go test ./...

Cobetura

Package Coverage
github.com/renanferr/planets-api/pkg/adding 100.0%
github.com/renanferr/planets-api/pkg/http/client 86.1%
github.com/renanferr/planets-api/pkg/http/rest 100.0%
github.com/renanferr/planets-api/pkg/http/rest/planets 80.3%
github.com/renanferr/planets-api/pkg/listing 100.0%
github.com/renanferr/planets-api/pkg/storage/mongo 67.4%

Licença

A aplicação está sob a licença MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published