API de super heróis e vilões que usa a SuperHero API como base de dados.
- Go versão >= 1.14
- BuffaloCLI
- Um banco de dados instalado
É necessario ter as sequintes variaveis de ambiente:
- SUPERHEROAPI_ACCESS_TOKEN - Com o token para acessar a SuperHero API
- SUPER_API_KEY - Com a key de autenticação de acesso
- TEST_DATABASE_URL - Se for usar uma url diferente da padrão para o DB de teste
- DATABASE_URL - Se for usar uma url diferente da padrão para o DB da produção**(Recomendado)**
A configuração padrão do DB de desenvolvimento espera que você esteja usando PostGreSQL e tenha um usuario postgres cuja senha é postgres.
As configurações de banco de dados ficam em database.yml. Para ver as opções disponíveis visite a documentação do gobuffalo.
Com o database.yml devidamente configurado e seu banco de dados rodando, execute
$ buffalo pop create -a
E aplique as migrações para atualizar o schema
$ buffalo db migrate
Esse comando aplica as migrações no DB de desenvolvimento, para aplicar na produção execute
$ buffalo db migrate -e production
Os testes podem ser feitos atraves da Buffalo CLI usando o comando
$ buffalo test
Para executar um teste especifico execute
$ buffalo test -m "Nome_do_Teste"
Para iniciar a API em modo de desenvolvimento:
$ buffalo dev
Você pode interagir com a API em http://127.0.0.1:3000
Listar todos os supers cadastrados:
/
ou
/all
Cadastrar supers:
/{chave}/add?name={nome}
Onde {chave} é o valor de SUPER_API_KEY e {nome} é o nome do super para ser cadastrado, a API procura por personagens na SuperHero API que contem o valor de {nome}. Retornas os supers cadastrados.
Para buscas supers:
/search?{campo}={valor}
Onde {chave} é o valor de SUPER_API_KEY, {campo} o campo alvo da busca e {valor} o valor para buscar
Os campos disponíveis para busca:
- uuid
- intelligence
- strength
- speed
- durability
- power
- combat
- min_height
- max_height
- min_weight
- max_weight
- image
- name
- full_name
- alias
- group
- relative
- occupation
- gender
- race
- eye_color
- hair_color
É possivel fazer uma pesquisa com multiplos campos usando &
/search?{campo1}={valor1}&{campo2}={valor2}&{campo3}={valor3}
Listar todos os herois cadastratos
/heros
Listar todos os vilões cadastrados
/villains
Remover um super cadastrado
/{chave}/destroy?super_id={id}
Onde {chave} é o valor de SUPER_API_KEY e {id} o UUID do super a remover