API de serviço de widgets e usuarios para ser consumido pelo projeto Widgets SPA.
A API foi produzida usando a linguagem Go, com persistência de dados em MySQL. Foram também usadas as seguintes bibliotecas:
- gorilla/mux - Gerador de rotas
- dgrijalva/jwt-go - Geração e autênticação de *json web tokens *
- jinzhu/gorm - ORM e gerenciador de migrações
- joho/godotenv - Carregamento de arquivo .env para variáveis de sistema
- validator.v9 - Validação de modelos
Para executar a API é necessário ter um aquivo .env com as credenciais do banco de dados, ou carregar as credenciais em variáveis de sistema. O arquivo .env.example contém exemplo de credenciais.
- DB_HOST - Host do banco a ser acessado
- DB_PORT - Porta usada para acessar o banco de dados
- DB_DATABASE - Banco usado
- DB_USERNAME - Usuário do banco de dados
- DB_PASSWORD - Senha do banco de dados
- DB_AUTO_MIGRATE - Boolean definindo se deve ser realizada a migração das tabelas
- DB_AUTO_POPULATE - Boolean definindo se deve ser realizada uma população inicial ao crias as tabelas
Para executar a API, basta executar os comandos:
$ go get github.com/guilhermeartem/widgets-api
$ widgets-api
A API pode ser acessada em localhost:4000, e a documentação das rotas em localhost:4000/docs.
É provido um Dockerfile para geração de uma imagem para Docker e um arquivo docker-compose para facilitar o uso. Para executar desse modo, deve ser feito:
$ git clone github.com/guilhermeartem/widgets-api
$ cd widgets-api
$ docker-compose up
A API pode ser acessada em localhost:4000, e a documentação das rotas em localhost:4000/docs.
##Autenticação
A autenticação é realizada por meio de Json Web Tokens (jwt.io). O JWT é obtido pela chamada à rota /api/login. O cadastro de usuários estava forado escopo desse projeto, assim, foram usadas para teste as credenciais username/password. Para autenticar as chamadas à API, basta adicionar ao header da requisição o campo Authorization, com valor "Bearer token".