成都网站建设设计

将想法与焦点和您一起共享

go语言写框架 go语言前端框架

go语言框架gin之集成swagger

1.先安装Go对应的开源Swagger相关的库

创新互联专注于岗巴企业网站建设,响应式网站,商城建设。岗巴网站建设公司,为岗巴等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

go get github.com/swaggo/swag/cmd/swag

go get github.com/swaggo/gin-swagger

go get github.com/swaggo/files

go get github.com/alecthomas/template

2.验证是否安装成功:swag -v

3.针对接口写入注解

// @Summary 获取多个标签

// @Tags 标签

// @Produce  json

// @Param name query string false "标签名称" maxlength(100)

// @Param state query int false "状态" Enums(0, 1) default(1)

// @Param page query int false "页码"

// @Param page_size query int false "每页数量"

// @Success 200 {object} model.TagSwagger "成功"

// @Failure 400 {object} errcode.Error "请求错误"

// @Failure 500 {object} errcode.Error "内部错误"

// @Router /api/v1/tags [get]

func (t Tag) List(c *gin.Context) {

}

// @Summary 新增标签

// @Tags 标签

// @Produce  json

// @Param name body string true "标签名称" minlength(3) maxlength(100)

// @Param state body int false "状态" Enums(0, 1) default(1)

// @Param created_by body string false "创建者" minlength(3) maxlength(100)

// @Success 200 {object} model.Tag "成功"

// @Failure 400 {object} errcode.Error "请求错误"

// @Failure 500 {object} errcode.Error "内部错误"

// @Router /api/v1/tags [post]

func (t Tag) Create(c *gin.Context) {

}

// @Summary 更新标签

// @Tags 标签

// @Produce  json

// @Param id path int true "标签ID"

// @Param name body string false "标签名称" minlength(3) maxlength(100)

// @Param state body int false "状态 (0为未删除、1为已删除)" Enums(0, 1) default(1)

// @Param modified_by body string true "修改者" minlength(3) maxlength(100)

// @Success 200 {array} model.Tag "成功"

// @Failure 400 {object} errcode.Error "请求错误"

// @Failure 500 {object} errcode.Error "内部错误"

// @Router /api/v1/tags/{id} [put]

func (t Tag) Update(c *gin.Context) {

}

4.针对整个项目进行注解,直接在main方法写入如下注解

//@title 项目名称

//@version 1.0

//@description 这里是描述

func main() {

5.生成执行 swag init

这时会在我项目的docs文件夹下面生成docs.go、swagger.json、swagger.yaml三个文件

6.要在routers中进行默认初始化和注册对应的路由:

r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

同时要引用 _"blog-service/docs" ,不然会报错

7.查看接口文档 :

8.ok,完成

go语言有没有类似tp5框架

有,go语言有框架,例如:Beego(Go语言下开源的,高性能Web框架 )、Buffalo(Go语言下快速Web开发框架)、Echo、Gin、Iris、Revel(高生产率,全栈Go语言的Web框架)等。

GoLang -- Gin框架

• 何为框架:

框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。

Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。

(1)首先需要安装,安装比较简单,使用go get即可

go get github.com/gin-gonic/gin

如果安装失败,直接去Github clone下来,放置到对应的目录即可。

(2)代码中使用:

下面是一个使用Gin的简单例子:

package main

import (

"github.com/gin-gonic/gin"

)

func main() {

router := gin.Default()

router.GET("/ping", func(c *gin.Context) {

c.JSON(200, gin.H{

"message": "pong",

})

})

router.Run(":8080") // listen and serve on 0.0.0.0:8080

}

简单几行代码,就能实现一个web服务。使用gin的Default方法创建一个路由handler。然后通过HTTP方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境。最后是启动路由的Run方法监听端口。麻雀虽小,五脏俱全。当然,除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。

Gin可以很方便的支持各种HTTP请求方法以及返回各种类型的数据,详情可以前往查看。

2.1 匹配参数

我们可以使用Gin框架快速的匹配参数,如下代码所示:

冒号:加上一个参数名组成路由参数。可以使用c.Param的方法读取其值。当然这个值是字串string。诸如/user/rsj217,和/user/hello都可以匹配,而/user/和/user/rsj217/不会被匹配。

浏览器输入以下测试:

返回结果为:

其中c.String是gin.Context下提供的方法,用来返回字符串。

其中c.Json是gin.Context下提供的方法,用来返回Json。

下面我们使用以下gin提供的Group函数,方便的为不同的API进行分类。

我们创建了一个gin的默认路由,并为其分配了一个组 v1,监听hello请求并将其路由到视图函数HelloPage,最后绑定到 0.0.0.0:8000

C.JSON是Gin实现的返回json数据的内置方法,包含了2个参数,状态码和返回的内容。http.StatusOK代表返回状态码为200,正文为{"message": “welcome"}。

注:Gin还包含更多的返回方法如c.String, c.HTML, c.XML等,请自行了解。可以方便的返回HTML数据

我们在之前的组v1路由下新定义一个路由:

下面我们访问

可以看到,通过c.Param(“key”)方法,Gin成功捕获了url请求路径中的参数。同理,gin也可以捕获常规参数,如下代码所示:

在浏览器输入以下代码:

通过c.Query(“key”)可以成功接收到url参数,c.DefaultQuery在参数不存在的情况下,会由其默认值代替。

我们还可以为Gin定义一些默认路由:

这时候,我们访问一个不存在的页面:

返回如下所示:

下面我们测试在Gin里面使用Post

在测试端输入:

附带发送的数据,测试即可。记住需要使用POST方法.

继续修改,将PostHandler的函数修改如下

测试工具输入:

发送的内容输入:

返回结果如下:

备注:此处需要指定Content-Type为application/x-www-form-urlencoded,否则识别不出来。

一定要选择对应的PUT或者DELETE方法。

Gin框架快速的创建路由

能够方便的创建分组

支持url正则表达式

支持参数查找(c.Param c.Query c.PostForm)

请求方法精准匹配

支持404处理

快速的返回给客户端数据,常用的c.String c.JSON c.Data


当前名称:go语言写框架 go语言前端框架
地址分享:http://chengdu.cdxwcx.cn/article/docpipp.html