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