Planets API
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
Adapters
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 |
APP_PORT |
Porta do servidor HTTP |
APP_LOG_LEVEL |
Nível de log estruturado da aplicação |
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
Testes
Testando
$ go test ./...
Cobetura
Package |
Coverage |
github.com/renanferr/swapi-golang-rest-api/pkg/adding |
100.0% |
github.com/renanferr/swapi-golang-rest-api/pkg/http/client |
86.1% |
github.com/renanferr/swapi-golang-rest-api/pkg/http/rest |
100.0% |
github.com/renanferr/swapi-golang-rest-api/pkg/http/rest/planets |
80.3% |
github.com/renanferr/swapi-golang-rest-api/pkg/listing |
100.0% |
github.com/renanferr/swapi-golang-rest-api/pkg/storage/mongo |
67.4% |
Licença
A aplicação está sob a licença MIT