go fiber: controller返回json格式

刘宏缔的架构森林發表於2024-11-16

一,程式碼:

1,controller/articleController.go

package controller

import (
	"github.com/gofiber/fiber/v2"
	"industry/config"
)

type ArticleController struct{}

func NewArticleController() *ArticleController {
	return &ArticleController{}
}

type Article struct {
	//定義文章的struct
	Id int `json:"id"`
	Title string `json:"title"`
	Author string  `json:"author"`
}

func (dc *ArticleController) GetArticle(c *fiber.Ctx) error {
	// 處理獲取文章的邏輯
	artilce := new(Article)
	artilce.Id = 1
	artilce.Title = "三國演義金聖嘆批本"
	artilce.Author = "羅貫中"
	return c.Status(200).JSON(config.Success(artilce))
}

func (dc *ArticleController) CreateArticle(c *fiber.Ctx) error {
	// 處理建立文章的邏輯
	return c.Status(200).JSON(config.Error("已存在同名文章,建立失敗!"))
}

2,config/result.go

package config


// 統一的返回引數格式
type Result struct {
	Status string  `json:"status"`  // 統一的返回狀態,‘success’ 成功 'failed' 失敗
	Code    int    `json:"code"`    // 統一的返回碼,0 成功 -1 失敗  600 未登入 700 需身份驗證
	Message string `json:"message"` // 統一的返回資訊
	Data    any    `json:"data"`    // 統一的返回資料
}

// 請求成功的預設返回
func Success(obj any) Result {
	return Result{"success",0, "ok", obj}
}

// 請求失敗的預設返回,code預設為-1
func Error(message string) Result {
	return ErrorCode(-1, message)
}

//請求失敗的預設返回
func ErrorCode(code int, message string) Result {
	return Result{"failed",code, message, nil}
}

二,測試效果:

成功

go fiber: controller返回json格式

報錯

go fiber: controller返回json格式

相關文章