Just my personal API project in GO.
|
|
пре 3 месеци | |
|---|---|---|
| cmd | пре 3 месеци | |
| db | пре 3 месеци | |
| internal | пре 3 месеци | |
| .env.example | пре 3 месеци | |
| .gitignore | пре 3 месеци | |
| README.md | пре 3 месеци | |
| go.mod | пре 3 месеци | |
| go.sum | пре 3 месеци |
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 });```