Este projeto é uma API RESTful construída com o framework Gin e JWT em Go com banco de dados POSTEGRE para efeito didático.
Aqui estão os endpoints disponíveis:
- POST /token: Gera um novo token de acesso.
curl --request GET \
--url http://127.0.0.1:8080/token
- POST /refreshToken: Gera um novo token de acesso com base no token de atualização fornecido.
curl --request GET \
--url http://127.0.0.1:8080/refreshToken \
--header 'Authorization: Bearer {token}'
- GET /items: Retorna todos os itens.
curl --request GET \
--url http://127.0.0.1:8080/items/ \
--header 'Authorization: Bearer {token}'
- GET /item/:id: Retorna o item com o ID fornecido.
curl --request GET \
--url http://127.0.0.1:8080/item/{id} \
--header 'Authorization: Bearer {token}'
- POST /items: Cria um novo item.
curl --request POST \
--url http://127.0.0.1:8080/items \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"id": 2,
"name": "teste2",
"price": 435
}
'
- PUT /items/:id: Atualiza o item com o ID fornecido.
curl --request PUT \
--url http://127.0.0.1:8080/items/{id} \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "teste2",
"price": 815
}
'
- DELETE /items/:id: Deleta o item com o ID fornecido.
curl --request DELETE \
--url http://127.0.0.1:8080/items/{id} \
--header 'Authorization: Bearer {token}'
- Clone o repositório.
- Instale as dependências com
go get
ougo mod download
. - Defina as variáveis de ambiente necessárias no arquivo .env (veja a seção Variáveis de Ambiente abaixo).
- Execute o programa com go run main.go.
- Compile com
go build -o apigo.exe
- PORT_API: Porta principal para subir api.
- SECRET: A chave secreta usada para assinar os tokens JWT. Deve ser uma string longa e aleatória.
- HOST_DB: O Host ou endereço IP
- PORT_DB: A Porta de conexão, geralmente 5432
- USER_DB: O usuário para conexão
- PASSWORD_DB: A senha do usuário para conexão
- DBNAME_DB: O Nome do banco de dados
CREATE TABLE items (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);