swaggos swagger 文档生成器开源项目

我要开发同款
匿名用户2020年09月07日
149阅读

技术信息

开源地址
https://gitee.com/wocaa/swaggos
授权协议
MIT

作品详情

swaggos是一个golag版本的swagger文档生成器,提供了ativecode包装器,并且支持主流的web框架包裹器

安装goget-ugithub.com/clearcodec/swaggos示例

目前只支持gi的包裹器

packagemaiimport("github.com/clearcodec/swaggos""github.com/clearcodec/swaggos/giwrapper""github.com/gi-goic/gi""github.com/go-opeapi/spec")typeUserstruct{Useramestrig`jso:"userame"required:"true"`Passwordstrig`jso:"password"required:"true"descriptio:"密码"example:"123456"maxLegth:"20"miLegth:"6"patter:"[a-zA-Z0-9]{6,20}"`Sexit`jso:"sex"required:"false"default:"1"example:"1"format:"it64"`HeadImageURLstrig`jso:"headImageUrl"`Historystrig`jso:"-"`//igore}fucmai(){g:=giwrapper.Default()doc:=g.Doc()g.Gi().Use(fuc(ctx*gi.Cotext){ctx.Writer.Header().Set("Access-Cotrol-Allow-Origi","*")})doc.JWT("Authorizatio")doc.HostIfo("https://localhost:8080/","/api/v1")group:=g.Group("/api/v1"){group.GET("/users",listUsers).Query("order",swaggos.DescRequired("排序",false)).Query("q",swaggos.DescRequired("名称迷糊查询",false)).JSON([]User{})group.POST("/user/create",createUser).Body(ew(User)).JSON(gi.H{"id":1})group.DELETE("/user/*id",deleteUser).JSON(gi.H{"id":1})group.PUT("/user/update",createUser).Body(ew(User)).JSON(ew(User))}g.ServeDoc()g.Gi().Ru(":8888")}fuclistUsers(ctx*gi.Cotext){}fuccreateUser(ctx*gi.Cotext){}fucdeleteUser(ctx*gi.Cotext){}示例将会生成该图例: clickheretoseeimage 您可以查看examples目录查看更多示例.

您也可以不使用包裹器fucmai(){doc:=swaggos.Default()doc.HostIfo("localhost:8080","/api").Respose(200,ewSuccessExample()).Respose(400,ewErrorExample())group:=doc.Group("/users")group.Get("/list").JSON(CommoResposeWithData([]model.User{}))group.Post("/create").Body(ew(model.User)).JSON(CommoResposeWithData(1))group.Put("/update").Body(ew(model.User)).JSON(CommoResposeWithData(1))//pathitemgroup.Get("/{id}").JSON(ew(model.User))group.Delete("/{id}").JSON(CommoResposeWithData(1))data,_:=doc.Build()fmt.Pritl(strig(data))data,_=doc.Yaml()fmt.Pritl(strig(data))}使用增加请求头doc.Header("ame","descriptio",true)=>geeratearequiredheaderwithkeyame增加jwttokedoc.JWT("Authorizatio")=>uiwillcreateauthorizatioirequestheaders.Oauth2支持scopes:=[]strig{"opeid"}doc.Oauth2("https://path/to/oauth/toke/url",scopes,scopes)=>uiwillcreateaoauth2passwordcredetialscliet增加host信息doc.HostIfo("yourhost.com","/your/api/prefix")增加响应cotet-Type类型doc.Produces("applicatio/jso")增加请求cotet-Type类型doc.Cosumes("applicatio/jso")生成jsodata,_:=doc.Build()fmt.Pritl(strig(data))=>thisistheswaggerschemaijsoformatdata,_:=doc.Yaml()fmt.Pritl(strig(data))=>yamlformatstruct的规则swaggos会解析结构体的tag并将其赋值到swagger规则上面,下面是本项目支持的一些tag示例

typeUserstruct{//字段名称model>jso//thisexamplefieldamewillbem1ModelNamestrig`model:"m1"jso:"m2"`//字段名会是userameUseramestrig`jso:"userame"`//字段名会是PasswordPasswordstrig//会被忽略Igored`jso:"-"`//是否必须Requiredstrig`required:"true"`//字段的描述Descriptiostrig`descriptio:"thisisdescriptio"`//字段的类型:strig,iteger,time,umber,boolea,array...Typestrig`type:"time"`//默认值abcDefaultValuestrig`default:"abc"`//最大值100Maxfloat64`maximum:"100"`//最小值0Mifloat64`mi:"0"`//最大长度20MaxLegthstrig`maxLegth:"20"`//最小长度10MiLegthstrig`miLegth:"10"`//正则表达式规则Patterstrig`patter:"\d{0,9}"`//数组长度小于3MaxItems[]it`maxItems:"3"`//数组长度大于3MiItem[]it`miItems:"3"`//枚举,用,分割EumValueit`eum:"a,b,c,d"`//忽略字段IgoreFieldstrig`igore:"true"`//匿名字段规则://如果是一个基本类型,则直接添加,//如果是一个数组,也将直接添加//如果是一个结构体但是带了jsotag,将会作为一个字段//如果是一个结构体带没有jsotag,将会将里面的子字段添加上该结构体上Aymouse}path上的工具方法path:=doc.Get("/")//创建一个query字段,包含了描述和是否必须path.Query("ame",DescRequired("descriptio",true)).//创建一个query字段,包含了描述和是否必须和默认值Query("ame2",DescRequiredDefault("desc",true,"default"))otherusefulfuctios:

//创建一个swagger的tagpath.Tag("usergroup")//请求的简单描述path.Summary("createaewuser")//请求的详细描述path.Descriptio("....")//设置请求-响应头path.CotetType("applicatio/jso","text/html")//form字段path.Form("key1",swaggos.Attribute{Required:true})//文件path.FormFile("file",swaggos.Attribute{Required:true})//form用接头体解析path.FormObject(ew(User))//query用结构体解析path.QueryObject(ew(User))//body用结构体解析path.Body(ew(User))//响应jsopath.JSON(ew(User))响应//响应带上具体的内容,将会创建具体的jso示例//400path.BadRequest(map[strig]iterface{"data":il,"code":400,})//401path.UAuthorizatio(v)//403path.Forbidde(v)//500path.ServerError(v)

github: https://github.com/clearcodec/swaggos

gitee: https://gitee.com/wocaa/swaggos

功能介绍

swaggos 是一个golang版本的swagger文档生成器,提供了native code包装器,并且支持主流的web框架包裹器 安装
go get -u github.com/...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论