Files
identity-provider-api/api/response.go
Björn Benouarets 277c693ded 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
2025-09-25 23:25:07 +02:00

48 lines
1.0 KiB
Go

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,
},
})
}