go-swagger标准接口暴露

添加依赖

复制代码
	github.com/gin-gonic/gin v1.11.0
	github.com/swaggo/files v1.0.1
	github.com/swaggo/gin-swagger v1.6.1
	github.com/swaggo/swag v1.16.6

定义返回值

复制代码
package response

type ResultVO struct {
	Code    int         `json:"code"`              //错误码
	Message string      `json:"message,omitempty"` //错误信息
	Data    interface{} `json:"data,omitempty"`    //返回的数据
}

type UserVO struct {
	ID    int    `json:"id"`    // ID
	Name  string `json:"name"`  // 用户姓名
	Email string `json:"email"` // 邮箱
}

定义参数

复制代码
package param

type UserParam struct {
	ID    int    `json:"id"`    // ID
	Name  string `json:"name"`  // 用户姓名
	Email string `json:"email"` // 邮箱
}

创建controller

复制代码
package controller

import (
	"github.com/gin-gonic/gin"
)

type UserController struct {
}

func NewUserController() *UserController {
	return &UserController{}
}

// @Summary 获取用户信息
// @Description 获取用户详细信息
// @Accept json
// @Produce json
// @Param id query int64 true "用户id"
// @Success 200 {object} response.ResultVO{data=response.UserVO}
// @Router /user/get [get]
func (u *UserController) GetUser(c *gin.Context) {

}

// @Summary 添加用户信息
// @Description 添加用户信息
// @Accept json
// @Produce json
// @Param user body param.UserParam true "用户信息"
// @Success 200 {object} response.ResultVO{data=response.UserVO}
// @Router /user/add [post]
func (u *UserController) AddUser(c *gin.Context) {

}

// @Summary 分页获取用户信息
// @Description 分页获取用户信息
// @Accept json
// @Produce json
// @Param pageSize query int64 true "一页几条"
// @Param current query int64 true "当前页"
// @Success 200 {object} response.ResultVO{data=[]response.UserVO}
// @Router /user/list [get]
func (u *UserController) ListUser(c *gin.Context) {

}

初始化swagger文件

复制代码
swag init

启动服务

复制代码
package main

import (
	"swagger_test/controller"
	_ "swagger_test/docs" //之前使用swag init 生成的swagger文档的路径

	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
)

func main() {
	r := gin.Default()
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

	userController := controller.NewUserController()
	r.GET("/user/get", userController.GetUser)
	r.POST("/user/add", userController.AddUser)
	r.GET("/user/list", userController.ListUser)
	r.Run(":8080")
}

访问接口

复制代码
http://127.0.0.1:8080/swagger/index.html#/default
相关推荐
咖啡八杯5 分钟前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育17 分钟前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
掘金码甲哥18 分钟前
这块终端神器, 必须吹爆!
后端
Csvn1 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
SeaTunnel2 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影2 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code3 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao121313 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
William.csj4 小时前
BaiduPCS-Go——下载百度网盘文件的工具
golang·baidupc
码事漫谈4 小时前
告别数据孤岛与AI“水土不服”:金仓多模融合时序库如何让数据真正服务于业务
后端