feat: add API response utilities

- Add standardized API response structures
- Include success and error response helpers
- Add request ID tracking for better debugging
- Support pagination metadata and links
- Provide consistent API response format across all endpoints
This commit is contained in:
Björn Benouarets
2025-09-25 23:25:07 +02:00
parent 769c223700
commit 277c693ded

47
api/response.go Normal file
View File

@@ -0,0 +1,47 @@
package api
import "github.com/gofiber/fiber/v2"
type Response struct {
Data interface{} `json:"data"`
Meta fiber.Map `json:"_meta"`
Links *fiber.Map `json:"_links"`
}
func Success(c *fiber.Ctx, data interface{}, status int, paginationInformation *fiber.Map, paginationLinks *fiber.Map) error {
requestID := string(c.Response().Header.Peek("X-Request-ID"))
if requestID == "" {
requestID = "unknown"
}
response := Response{
Data: data,
Meta: fiber.Map{
"request_id": requestID,
},
}
if paginationInformation != nil {
response.Meta["pagination"] = paginationInformation
}
if paginationLinks != nil {
response.Links = paginationLinks
}
return c.Status(status).JSON(response)
}
func Error(c *fiber.Ctx, message string, status int, data interface{}) error {
requestID := string(c.Response().Header.Peek("X-Request-ID"))
if requestID == "" {
requestID = "unknown"
}
return c.Status(status).JSON(Response{
Data: data,
Meta: fiber.Map{
"message": message,
"request_id": requestID,
},
})
}