A solução apresentada foi elaborada em Go usando Gorila Mux para rotear os endpoints e o MongoDB como banco de dados de documentos e seguindo a metodologia TDD (test-driven methodology). Foi pensada para ser fault tolerant e atuar como uma solução de backend.
- Aprender e ficar proficiente em Go
- Estudo e uso de um banco de dados NoSQL
- Aprender a suar MongoDB e Go implemnentando uma API Rest
- Binários Go instalados e configurados.
- Windows: download
- Linux:
ubuntu@usr$ sudo add-apt-repository ppa:longsleep/golang-backports ubuntu@usr$ sudo apt-get update ubuntu@usr$ sudo apt-get install golang-go
- MongoDB instalado e rodando como serviço na porta default 27017
- Windows: download
- Linux:
ubuntu@usr$ sudo apt update ubuntu@usr$ sudo apt install -y mongodb
Antes de rodar a aplicação, tendo todos os requisitos, devemos baixar as dependências do projeto
- gorillaz mux:
$ go get github.com/gorilla/mux
- mongoDB driver:
$ go get go.mongodb.org/mongo-driver/mongo
A solução foi desenvolvida em ambiente Windows usando as seguintes ferramentas:
- VSCode: https://code.visualstudio.com/
- Extensão Go
- Extensão openapi-lint
- Mongo Compass: https://www.mongodb.com/products/compass
- PostMan: https://www.getpostman.com/
A API foi descrita usando a especificação OpenAPI 3 no formato YAML. O arquivo openapi.yaml pode ser validado com a ferramenta Swagger por exemplo.
Os Testes foram feitos apenas para as funções handler, que servem os requests dos endpoints. Os testes são simples, levando apenas em consideração os código de retorno http.
$ go test -timeout 30 GIT-Stars/handler
Na pasta raiz do projeto:
$ go build
$ ./GIT-Stars
Para testar basta fazer as requests para os endpoints em http://localhost:8000 via brower/curl ou com a ferramenta PostMan