swapi-golang-rest-api

module
v0.0.0-...-6899bbb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2020 License: MIT

README

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
  • 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
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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL