Just my personal API project in GO.
|
|
před 2 měsíci | |
|---|---|---|
| cmd | před 2 měsíci | |
| db | před 3 měsíci | |
| internal | před 2 měsíci | |
| .env.example | před 3 měsíci | |
| .gitignore | před 3 měsíci | |
| README.md | před 3 měsíci | |
| go.mod | před 3 měsíci | |
| go.sum | před 3 měsíci |
Este projeto é uma API simples para aprendizado em GoLang seguindo a estrutura utilizada por padrão em empresas que utilizam Go.
go get github.com/joho/godotenv
go get github.com/mattn/go-sqlite3
go mod tidy
go run ./cmd/GoApi/main.go
A aplicação estará disponível em http://localhost:8080 (ou similar, conforme o terminal indicar).
Para funcionamento desse middleware, é necessário adicionar as seguintes headers na requisição:
Alem de adicionar um pre-request script no Postman para gerar a assinatura.
// Lê dados do ambiente
const secret = pm.environment.get("hmac_secret");
if (!secret) {
throw new Error("Env var 'hmac_secret' não definida no Postman.");
}
// Método e path exatos
const method = pm.request.method; // GET/POST
// Garante que usamos somente o path (sem query)
const url = new URL(pm.request.url.toString());
const path = url.pathname;
// Timestamp em segundos
const ts = Math.floor(Date.now() / 1000).toString();
// Corpo bruto (para GET deve ser string vazia)
let body = "";
if (method !== "GET" && pm.request.body && pm.request.body.raw) {
// Use exatamente o que vai no corpo da requisição
body = pm.request.body.raw;
}
// Monta a mensagem canônica
const msg = method + "\n" + path + "\n" + ts + "\n" + body;
// Calcula HMAC-SHA256 em hex usando CryptoJS (nativo do Postman)
const signature = CryptoJS.HmacSHA256(msg, secret).toString(CryptoJS.enc.Hex);
// Define headers
pm.request.headers.upsert({ key: "X-Timestamp", value: ts });
pm.request.headers.upsert({ key: "X-Signature", value: signature });