成都市网站建设费用及企业Wordpress 分表分库

pingmian/2025/10/7 21:18:39/文章来源:
成都市网站建设费用及企业,Wordpress 分表分库,免费网站怎么做出来的,杭州seo薪资水平golang 引入swagger#xff08;iris、gin#xff09; 在开发过程中#xff0c;我们不免需要调试我们的接口#xff0c;但是有些接口测试工具无法根据我们的接口变化而动态变化。文档和代码是分离的。总是出现文档和代码不同步的情况。这个时候就可以在我们项目中引入swagge…golang 引入swaggeriris、gin 在开发过程中我们不免需要调试我们的接口但是有些接口测试工具无法根据我们的接口变化而动态变化。文档和代码是分离的。总是出现文档和代码不同步的情况。这个时候就可以在我们项目中引入swagger方便后期维护以及他人快速上手项目 0 下载swagger # 1 安装swagger # 在go.mod目录所在位置执行命令 go get -u github.com/swaggo/swag/cmd/swag# 查看是否安装成功 swag -v# 如果发现报错zsh: command not found: swag则需要手动编译生成swag cd $GOPATH/pkg/mod/github.com/swaggo/swagv1.16.2/cmd/swag/ sudo go build sudo mv swag $GOPATH/bin # 查看是否安装成功 swag -v 1 iris引入swagger ①导入iris-contrib/swagger依赖 //安装swagger扩展,本项目使用的是iris最新版iris/v12因此需要安装iris-swagger/v12扩展go get -v github.com/iris-contrib/swagger/swaggerFiles go get -v github.com/iris-contrib/swagger/v12②添加对应swagger注解 swag init生成docs 在项目对应文件添加swagger注解并通过swag init生成docs 注意如果代码中的swagger注释有修改需要重新执行swag init生成文档 例如我给controller添加注解 package controllerimport (encoding/jsongithub.com/kataras/iris/v12github.com/kataras/iris/v12/mvcmyTest/demo_home/swagger_demo/iris/modelnet/http )type UserController struct {Ctx iris.Context }func (u *UserController) BeforeActivation(b mvc.BeforeActivation) {b.Handle(http.MethodGet, /getAll, GetAllUsers) }// GetAllUsers Summary 获取用户信息 // Description 获取所有用户信息 // Tags 用户 // Accept json // Produce json // Router /user/getAll [get] func (u *UserController) GetAllUsers() mvc.Result {//手动模拟从数据库查询到user信息resp : new(mvc.Response)resp.ContentType application/jsonuser1 : new(model.User)user1.Name zhangsanuser1.Age 20user2 : new(model.User)user2.Name li4user2.Age 28users : []model.User{*user1, *user2}marshal, _ : json.Marshal(users)resp.Content marshalresp.Code http.StatusOKreturn resp }//在项目根目录执行swag init ( 默认会找当前目录下的 main.go 文件如果不叫 main.go 也可以-g手动指定文件位置。) swag init # swag init -g cmd/api/api.go -o cmd/api/docs (-o指定docs生成位置)③main.go中引入swag生成doc包 在 main.go 中导入刚才生成的 docs 包 package mainimport (github.com/iris-contrib/swagger/v12github.com/iris-contrib/swagger/v12/swaggerFilesgithub.com/kataras/iris/v12myTest/demo_home/swagger_demo/iris/controller_ myTest/demo_home/swagger_demo/iris/docs //引入docs包 )func main() {app : iris.New()controller.InitControllers(app)config : swagger.Config{URL: http://localhost:8080/swagger/doc.json, //The url pointing to API definition}app.Get(/swagger/{any}, swagger.CustomWrapHandler(config, swaggerFiles.Handler))app.Listen(:8080) }④运行程序访问ip:port/swagger/index.html页面 运行main.go浏览器输入http://localhost:8080/swagger/index.html 全部代码 Github https://github.com/ziyifast/ziyifast-code_instruction/tree/main/swagger_demo 项目结构 main.go package mainimport (github.com/iris-contrib/swagger/v12github.com/iris-contrib/swagger/v12/swaggerFilesgithub.com/kataras/iris/v12myTest/demo_home/swagger_demo/iris/controller_ myTest/demo_home/swagger_demo/iris/docs # 引入生成的docs包 )func main() {app : iris.New()controller.InitControllers(app)config : swagger.Config{URL: http://localhost:8080/swagger/doc.json, //The url pointing to API definition}app.Get(/swagger/{any}, swagger.CustomWrapHandler(config, swaggerFiles.Handler))app.Listen(:8080) }controller/controllers.go package controllerimport (github.com/kataras/iris/v12github.com/kataras/iris/v12/mvc )func InitControllers(app *iris.Application) {myMvc : mvc.New(app.Party(/user))myMvc.Handle(new(UserController)) }controller/user_controller.go package controllerimport (encoding/jsongithub.com/kataras/iris/v12github.com/kataras/iris/v12/mvcmyTest/demo_home/swagger_demo/iris/modelnet/http )type UserController struct {Ctx iris.Context }func (u *UserController) BeforeActivation(b mvc.BeforeActivation) {b.Handle(http.MethodGet, /getAll, GetAllUsers) }// GetAllUsers Summary 获取用户信息 // Description 获取所有用户信息 // Tags 用户 // Accept json // Produce json // Router /user/getAll [get] func (u *UserController) GetAllUsers() mvc.Result {//手动模拟从数据库查询到user信息resp : new(mvc.Response)resp.ContentType application/jsonuser1 : new(model.User)user1.Name zhangsanuser1.Age 20user2 : new(model.User)user2.Name li4user2.Age 28users : []model.User{*user1, *user2}marshal, _ : json.Marshal(users)resp.Content marshalresp.Code http.StatusOKreturn resp }2 gin引入swagger ①导入swaggo/gin-swagger依赖 // 引入gin及gin-swagger依赖 go get github.com/gin-gonic/gin go get github.com/swaggo/gin-swagger/swaggerFiles go get github.com/swaggo/gin-swagger②添加对应swagger注解 swag init生成docs 注意如果代码中的swagger注释有修改需要重新执行swag init生成文档 user_controller.go package controllerimport (ret myTest/demo_home/swagger_demo/gin/responsenet/httpstrconvtimegithub.com/gin-gonic/gin )// Hello 测试 // Summary 测试SayHello // Description 向你说Hello // Tags 测试 // Accept json // Produce json // Param who query string true 人名 // Success 200 {string} string {msg: hello lixd} // Failure 400 {string} string {msg: who are you} // Router /hello [get] func Hello(c *gin.Context) {who : c.Query(who)if who {c.JSON(http.StatusBadRequest, gin.H{msg: who are u?})return}c.JSON(http.StatusOK, gin.H{msg: hello who}) }type LoginReq struct {Username string json:usernamePassword string json:password } type LoginResp struct {Token string json:token }// Login 登陆 // Summary 登陆 // Tags 登陆注册 // Description 登入 // Accept json // Produce json // Param user body LoginReq true 用户名密码 // Success 200 {object} ret.Result{dataLoginResp} token // Failure 400 {object} ret.Result 错误提示 // Router /login [post] func Login(c *gin.Context) {var m LoginReqif err : c.ShouldBind(m); err ! nil {c.JSON(http.StatusBadRequest, ret.Fail(参数错误))return}if m.Username admin m.Password 123456 {resp : LoginResp{Token: strconv.Itoa(int(time.Now().Unix()))}c.JSON(http.StatusOK, ret.Success(resp))return}c.JSON(http.StatusUnauthorized, ret.Fail(user or password error)) }③main.go中引入swag生成doc包 package mainimport (github.com/gin-gonic/ginginSwagger github.com/swaggo/gin-swaggergithub.com/swaggo/gin-swagger/swaggerFilesmyTest/demo_home/swagger_demo/gin/controller_ myTest/demo_home/swagger_demo/gin/docs )var swagHandler gin.HandlerFunc// title Swagger Example API // version 1.0 // description This is a sample server. // termsOfService https://lixueduan.com// contact.name lixd // contact.url https://lixueduan.com // contact.email xueduan.ligmail.com// license.name Apache 2.0 // license.url http://www.apache.org/licenses/LICENSE-2.0.html// host localhost:8080 // BasePath /api/v1// SwaggerUI: http://localhost:8080/swagger/index.html func main() {e : gin.Default()v1 : e.Group(/api/v1){v1.GET(/hello, controller.Hello)v1.POST(/login, controller.Login)}e.GET(swagger/*any, ginSwagger.WrapHandler(swaggerFiles.Handler))if swagHandler ! nil {e.GET(/swagger/*any, swagHandler)}if err : e.Run(:8080); err ! nil {panic(err)} }resp.go: // Package ret 统一返回结构 package retimport (net/http )const (MsgSuccess successMsgFail fail )type Result struct {Code int json:codeData interface{} json:dataMsg string json:msg }func Success(data interface{}, msg ...string) *Result {var m MsgSuccessif len(msg) 0 {m msg[0]}return Result{Code: http.StatusOK,Data: data,Msg: m,} }func Fail(msg ...string) *Result {var m MsgFailif len(msg) 0 {m msg[0]}return Result{Code: http.StatusBadRequest,Data: ,Msg: m,} }④运行程序访问ip:port/swagger/index.html http://localhost:8080/swagger/index.html 全部代码 地址 https://github.com/ziyifast/ziyifast-code_instruction/tree/main/swagger_demo main.go package mainimport (github.com/gin-gonic/ginginSwagger github.com/swaggo/gin-swaggergithub.com/swaggo/gin-swagger/swaggerFilesmyTest/demo_home/swagger_demo/gin/controller_ myTest/demo_home/swagger_demo/gin/docs )var swagHandler gin.HandlerFunc// title Swagger Example API // version 1.0 // description This is a sample server.// contact.name lixd // contact.name ziyi // contact.url https://github.com/ziyifast/ziyifast-code_instruction/tree/main/swagger_demo// license.name Apache 2.0 // license.url http://www.apache.org/licenses/LICENSE-2.0.html// host localhost:8080 // BasePath /api/v1// SwaggerUI: http://localhost:8080/swagger/index.html func main() {e : gin.Default()v1 : e.Group(/api/v1){v1.GET(/hello, controller.Hello)v1.POST(/login, controller.Login)}e.GET(swagger/*any, ginSwagger.WrapHandler(swaggerFiles.Handler))if swagHandler ! nil {e.GET(/swagger/*any, swagHandler)}if err : e.Run(:8080); err ! nil {panic(err)} }controller/user_controller.go package controllerimport (ret myTest/demo_home/swagger_demo/gin/responsenet/httpstrconvtimegithub.com/gin-gonic/gin )// Hello 测试 // Summary 测试SayHello // Description 向你说Hello // Tags 测试 // Accept json // Produce json // Param who query string true 人名 // Success 200 {string} string {msg: hello lixd} // Failure 400 {string} string {msg: who are you} // Router /hello [get] func Hello(c *gin.Context) {who : c.Query(who)if who {c.JSON(http.StatusBadRequest, gin.H{msg: who are u?})return}c.JSON(http.StatusOK, gin.H{msg: hello who}) }type LoginReq struct {Username string json:usernamePassword string json:password } type LoginResp struct {Token string json:token }// Login 登陆 // Summary 登陆 // Tags 登陆注册 // Description 登入 // Accept json // Produce json // Param user body LoginReq true 用户名密码 // Success 200 {object} ret.Result{dataLoginResp} token // Failure 400 {object} ret.Result 错误提示 // Router /login [post] func Login(c *gin.Context) {var m LoginReqif err : c.ShouldBind(m); err ! nil {c.JSON(http.StatusBadRequest, ret.Fail(参数错误))return}if m.Username admin m.Password 123456 {resp : LoginResp{Token: strconv.Itoa(int(time.Now().Unix()))}c.JSON(http.StatusOK, ret.Success(resp))return}c.JSON(http.StatusUnauthorized, ret.Fail(user or password error)) }response/response.go // Package ret 统一返回结构 package retimport (net/http )const (MsgSuccess successMsgFail fail )type Result struct {Code int json:codeData interface{} json:dataMsg string json:msg }func Success(data interface{}, msg ...string) *Result {var m MsgSuccessif len(msg) 0 {m msg[0]}return Result{Code: http.StatusOK,Data: data,Msg: m,} }func Fail(msg ...string) *Result {var m MsgFailif len(msg) 0 {m msg[0]}return Result{Code: http.StatusBadRequest,Data: ,Msg: m,} }3 注解 3.1 swagger主文件注解-通用API信息 注释说明示例title必填 应用程序的名称// title Swagger Example APIversion必填 提供应用程序API的版本。// version 1.0description应用程序的简短描述。// description This is a sample server celler server.tag.name标签的名称。// tag.name This is the name of the tagtag.description标签的描述。// tag.description Cool Descriptiontag.docs.url标签的外部文档的URL。// tag.docs.url https://example.comtag.docs.description标签的外部文档说明。// tag.docs.description Best example documentationtermsOfServiceAPI的服务条款。// termsOfService http://swagger.io/terms/contact.name公开的API的联系信息。// contact.name API Supportcontact.url联系信息的URL。 必须采用网址格式。// contact.urlcontact.email联系人/组织的电子邮件地址。 必须采用电子邮件地址的格式。// contact.email supportswagger.iolicense.name必填 用于API的许可证名称。// license.name Apache 2.0license.url用于API的许可证的URL。 必须采用网址格式。// license.url http://www.apache.org/licenses/LICENSE-2.0.htmlhost运行API的主机主机名或IP地址。// host localhost:8080BasePath运行API的基本路径。// BasePath /api/v1acceptAPI 可以使用的 MIME 类型列表。 请注意Accept 仅影响具有请求正文的操作例如 POST、PUT 和 PATCH。 值必须如“Mime类型”中所述。// accept jsonproduceAPI可以生成的MIME类型的列表。值必须如“Mime类型”中所述。// produce jsonquery.collection.format请求URI query里数组参数的默认格式csvmultipipestsvssv。 如果未设置则默认为csv。// query.collection.format multischemes用空格分隔的请求的传输协议。// schemes http httpsx-name扩展的键必须以x-开头并且只能使用json值// x-example-key {“key”: “value”} 通用api信息部分可以是在docs包里生成的可以在项目启动的时候或者在注册swagger路由的时候修改掉部分信息或者动态注入部分不固定的值比如项目的基础路径BasePath func NewRouter() *gin.Engine {gin.SetMode(debug)engine : gin.New()docs.SwaggerInfo.BasePath /api/v2engine.POST(/, v1.GetWord)engine.GET(/swagger/*any, ginSwagger.WrapHandler(swaggerFiles.Handler))engine.GET(/log/:id, client.ReadLokiLog)return engine }3.2 单个API样例 注释样例description操作行为的详细说明。description.markdown应用程序的简短描述。该描述将从名为endpointname.md的文件中读取。id用于标识操作的唯一字符串。在所有API操作中必须唯一。tags每个API操作的标签列表以逗号分隔。summary该操作的简短摘要。acceptAPI 可以使用的 MIME 类型列表。 请注意Accept 仅影响具有请求正文的操作例如 POST、PUT 和 PATCH。 值必须如“Mime类型”中所述。produceAPI可以生成的MIME类型的列表。值必须如“Mime类型”中所述。param用空格分隔的参数。param name,param type,data type,is mandatory?,comment attribute(optional)security每个API操作的安全性。success以空格分隔的成功响应。return code,{param type},data type,commentfailure以空格分隔的故障响应。return code,{param type},data type,commentresponse与success、failure作用相同header以空格分隔的头字段。 return code,{param type},data type,commentrouter以空格分隔的路径定义。 path,[httpMethod]x-name扩展字段必须以x-开头并且只能使用json值。 // Summary 测试swagger // Tags test // version 1.0 // Success 200 object FinalResult{datav1.Application} 成功后返回值 // Failure 500 object FinalResult 添加失败 // Router / [get] func GetWord(ctx *gin.Context) {application : Application{Id: 1}err : ctx.BindJSON(application)if err ! nil {ctx.JSON(500, )}ctx.JSON(200, SuccessResult(application)) }summary 是这个api的名字可以显示在yapi的名称 tag 是这个api所在的分组 success 支持组合嵌套 param 说明了api需要的请求参数 param的类型支持 querypathheaderbodyformData 如果我们需要给字段添加注释直接在字段后面添加即可 直接在参数属性后面增加注释也可以指定参数的名称说明描述 type Application struct {Id int json:id example:2 // 环境IDName string json:name example:环境一 // Name 环境名称 }忽略某个字段 type Account struct {ID string json:idName string json:nameIgnored int swaggerignore:true }注意如果代码中的swagger注释有修改需要重新执行swag init生成文档 参考https://blog.csdn.net/qq_38371367/article/details/123005909 bug 1 unknown field LeftDelim in struct literal of type github.com/swaggo/swag 注意如果遇到报错 docs/docs.go:30:2: unknown field LeftDelim in struct literal of type “github.com/swaggo/swag”.Spec 可能是由于swag版本过低导致升级版本即可:go get -u -v github.com/swaggo/swag/cmd/swag 2 添加了swag 注解访问页面成功但没有对应的方法 重新执行swag init然后重新启动项目 如果代码中的swagger注解有修改需要重新执行swag init生成文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天津网站建设费用电脑可以做网站主机么

C编译环境和预处理(非常详细,建议收藏) 一、程序的翻译环境和执行环境二、 详解编译链接2.1 翻译环境2.2 编译本身的几个阶段符号汇总、符号表、合并段表、符号表的合并和重定位分别是什么? 2.2 运行环境 三、预处理详解3.1 预定义…

Python用数据库做网站做一个网站能卖多少钱

1. 外部类 (写在pulic修饰的类外面) 2. 静态内部类(写在类的里面) 3. 局部内部类(写在方法里面) 4. 匿名内部类 5. 函数式接口。lambada表达式。public class LambdaDemo01 {/*** 2. 静态内部类*/static class Love02 implements Lover {Overridepublic void love() {System.ou…

交换机做网站在招聘网站里做电话销售

java的封装,继承,多态 1 封装 1.1 封装 指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的…

企业手机网站建设流程图关键词查询网址

1.解析原理图 由上图可以看到8个共阳LED灯接到了573输出口,而573输入接到单片机P0口上。当573 LE脚输入高电平时,输出随输入变化,当LE为低电平时,输出锁存。 由上图可以看到Y4C接到了或非门74HC02的输出端,而输入端为…

袜子网站建设规划书推广网站概况

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧&…

手机端网站建设广告词做网站的价格是多少

3166练27.3 称心如意《信息学奥赛一本通编程启蒙(C版)》 【题目描述】 每次测试后狐狸老师总会把成绩输入计算机,进行处理分析。但输入时有时会出错,如当满分为100分时,输入小于0或大于100的数,表示输入有…

如何加强省市级政门户网站建设建设银行上海分行招聘网站

1. Symbol概念以及引入原因 ES6 引入了的一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、…

企业网站建设免备案镇江方圆建设监理咨询有限公司网站

提到家务清洁,相信应该是很多宝妈头疼的事儿,不仅工作量打,耗时又耗力,拥有一款完美的清洁工具,那讲大大的提升幸福指数,而洗地机便是当下的智能清洁神器之一。那么家用洗地机哪个牌子最好用,质…

外国炫酷网站网址新做的网站如何

From: http://www.bubuko.com/infodetail-598915.html

喀什百度做网站多少钱定制网络零信任

小家电中要说对自己家里最有用的,其中之一就是扫地机器人,自从三年多前开始用了扫地机器人后,家里的地面是大为改观,劳动强度大为下降,可谓朕心甚慰。从此之后,一发不可收拾,用过也有20台以上的…

高端网站开发哪里好个人特种证件查询网站

Reflector类负责对一个类进行反射解析&#xff0c;并将解析后的结果在属性中存储起来。 一个类反射解析后都有哪些属性呢&#xff1f;我们可以通过Reflector类定义的属性来查看 public class Reflector {// 要被反射解析的类private final Class<?> type;// 可读属性列…

大型小说网站开发语言社交网站 cms

简介&#xff1a; 2020 年的“十一出行节”期间&#xff0c;高德地图创造了记录 ——截止 2020 年 10 月 1 日 13 时 27 分 27 秒&#xff0c;高德地图当日活跃用户突破 1 亿&#xff0c;比 2019 年 10 月 1 日提前 3 时 41 分达成此记录。 期间&#xff0c;Serverless 作为其中…

dedecms做模板网站网站上怎么做动画广告视频在线观看

基于Camunda实现bpmn中各种类型任务 ​ Camunda Modeler -为流程设置器&#xff08;建模工具&#xff09;&#xff0c;用来构建我们的流程模型。Camunda Modeler流程绘图工具&#xff0c;支持三种协议类型流程文件分别为&#xff1a;BPMN、DMN、Form。 ​ Camunda Modeler下载…

网站建设具体工作重庆彼客的网站是谁家做的

PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域&#xff0c;发现可视化领域有意思的内容。不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 微信订阅号&#xff1a;popodv_com谷歌决定关闭云可视化服务 Fusion Tables谷歌宣布即将关闭其 Fusion Tables 云服务&#x…

有哪些做微信小游戏的网站wordpress网站恢复

系列文章目录 代码随想录算法训练营第一天|数组理论基础&#xff0c;704. 二分查找&#xff0c;27. 移除元素 代码随想录算法训练营第二天|977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II 代码随想录算法训练营第三天|链表理论基础&#xff…

杭州网站排名优化公司在线做头像网站有哪些

C#基础 1. 简述值类型和引用类型有什么区别2. C# String类型比 stringBuilder 类型的优势是什么?3.面向对象的三大特点4.请简述private&#xff0c;public&#xff0c;protected&#xff0c;internal的区别5.结构体和类6.请描述Interface与抽象类之间的不同7.在类的构造函数前…

网站语音转写怎么做天元建设集团有限公司总工程师

写在前面你想成为Python爬虫的高手么&#xff1f;你想爬取你想要的高质量数据么&#xff1f;那么你得需要进行爬虫项目的演练&#xff0c;那样你才有可能在Python爬虫的道路上走的更远小编在这里精心总结了20个爬虫项目的演练&#xff0c;是目前爬虫高手一直专注的领域。小编将…

变更股东怎样在工商网站做公示婚车租赁

英飞凌TC3xx之一起认识GTM(九)GTM相关知识简述(CMU,CCM,TBU,MON) 1 时钟管理单元(CMU)2 集群配置模块(CCM)3 时基单元(TBU)4 监控单元(MON)5 总结由前文的各篇内容,开发者已经知道如何使用GTM的大部分功能,在这些功能中,都需要一个信息就是fGTM 的数据,我们在前…

外管局网站做延期收汇报告衡阳建设网站

我的windows11系统上&#xff0c;之前已经安装好了window版本的docker&#xff0c;没有安装的小伙伴需要去安装一下。 下面直接记录安装linux的步骤&#xff1a; 一、创建linux容器 1、拉取镜像 docker pull ubuntu 2、查看镜像 docker images 3、创建容器 docker run --…

网站开发模板免费下载wordpress如何去掉版权

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 方法一&#xff1a;移动窗口 设置两个指针&…