欢迎来到《圣博凯斯》变频供水设备官网
精锐于专业 / 卓然于品质 -- 20年专注于供水行业,缔造至臻品质 -- 服务热线:0731-85783205 18932453205

初探的意思是什么_初探是什么意思

一、SwaggerUI介绍

SwaggerUI是我们小组在做课程作业,前后端交互需要API文档时,我无意间发现的一个工具。借助SwaggerUI,我们可以便捷的获得类似下方的可视化图形界面:

之后,我们便可以根据此“API文档”进行开发。

“Swagger UI 允许任何人(无论是你的开发团队还是最终用户)在没有任何实现逻辑的情况下对 API 资源进行可视化和交互。它(API文档)通过 Swagger 定义自动生成,可视化文档使得后端实现和客户端消费变得更加容易。” --SmartBear

源码地址在这里。

二、SwaggerUI使用

user服务为例。

安装go-swagger $ go get github.com/go-swagger/go-swagger/cmd/swagger swagger:meta

以下内容放在项目程序入口main.go中:

// Copyright 2019 money-hub. All rights reserved.// Use of this source code is governed by a MIT-style// license that can be found in the LICENSE file.// money-hub MoneyDodo/personalTasks//// This documentation describes example APIs found under https://github.com/ribice/golang-swaggerui-example//// Schemes: http// Version: 1.0.0// License: MIT http://opensource.org/licenses/MIT//// Consumes:// - application/json//// Produces:// - application/json//// Security:// - bearer//// SecurityDefinitions:// bearer:// type: apiKey// name: Authorization// in: header//// swagger:meta

1. money-hub MoneyDodo/personalTasks - 项目名称
2. This documentation …… - 第二行为description
3. Schemes - HTTP或HTTPS
4. Version - API版本号
5. License - 许可证
6. Consumes、Produces - 表示request和response的数据类型
7. Security - 授权按钮
8. SecurityDefinitions - 安全类型定义
点击Authorize会弹出如下提示框:其中即为JWT认证的相关信息

swagger:operation // swagger:operation PUT /api/users/{userid} users swaggPutReq// ---// summary: Update the user profile// description: Update the user profile with the profile. Also, you need to specify the user ID.// parameters:// - name: userid// in: path// description: id of user// type: string// required: true// - name: Body// in: body// schema:// "$ref": "#/definitions/User"// required: true// responses:// "200":// "$ref": "#/responses/swaggNoReturnValue"// "400":// "$ref": "#/responses/swaggBadReq"

1. swagger:operation - 提示符,表示一个请求操作

2. PUT - HTTP方法

3. /api/users/{userid} - 路径

4. users - 类似于路由分隔标签,将相同的分隔标签的请求归到同一组

5. swaggPutReq - 此参数没有具体意义,单参数是强制性的,但是推荐不同请求使用不同的参数。命名格式可采用swaggXXXReq,若不同请求该参数一样,会出现很多bug。

6. — - 分隔符,下方代码为YAML格式的swagger规范,缩进必须保持一致且正确,推荐使用两格缩进。否则将无法正常解析。

7. summary - 标题,API的概括描述

8. description - 描述,API的详细描述

9. parameters - URL参数,此例子中为{userId},如果需要query的,可使用?name={name}来表示

10. - name - 指定参数,此例子中为URL中的userId

11. in - 表示此参数位于哪个部分,path表示位于URL路径中,body表示位于上传的request body中

12. description - 参数说明

13. type - 指定参数类型

14. required - 是否一定需要此参数

15. schema - 当参数位于body中需要此参数,指定参数的数据结构,**"$ref": “#/definitions/XXX”**按照此种格式写即可,XXX为定义的model文件(并非swagger/model.go)中的具体的数据类型,具体原因尚未搞懂。

16. responses - 说明返回类型。

17. “200” - 200表示状态码,我用200表示成功的请求;"$ref": "#/responses/swaggNoReturnValue"按照此格式来书写,其中swaggNoReturnValue定义在swagger/model.go文件中,使用到了swagger:response

// HTTP status code 200 and no return value// swagger:response swaggNoReturnValuetype swaggNoReturnValue struct {// in:bodyBody struct {// HTTP Status Code 200Status bool `json:"status"`// Detailed error messageErrinfo string `json:"errinfo"`}} 第一行注释:尽量书写,会体现在swaggerui中第二行注释:swagger:response为提示符,swaggNoReturnValue为下方数据类型的一个tag,这两者共同组成了**"$ref": “#/responses/swaggNoReturnValue”**数据结构中,有三个属性:Status、Errinfo、Data,上述结构中没有返回值,所以取消了最后一个参数。

18. “400” - 400表示状态码,我用400来表示失败的请求。返回格式说明与上述过程一致。

swagger:route // swagger:route POST /api/users users swaggCreateUserReq// Create a new user with the profile.// If the user's id is "exists", error will be returned.// responses:// 200: swaggNoReturnValue// 400: swaggBadReq

swagger:route 是简单 API 的短注释,它适用于没有输入参数(路径/查询参数)的 API,如果API存在users/{userid}或者users/search?name={name}类型的参数,则必须使用swagger:operation。
1. swagger:route - 提示符,表示一个请求操作
2. POST - HTTP方法
3. /api/users - 路径
4. users - 类似于路由分隔标签,将相同的分隔标签的请求归到同一组
5. swaggCreateUserReq - 用于请求上传的参数
参数定义在swagger/model.go文件中,使用到swagger:parameters

// Create User request// swagger:parameters swaggCreateUserReqtype swaggCreateUserReq struct {// in:bodyBody model.User} 第一行注释:描述此参数第二行注释:swagger:parameters表示请求参数提示符,swaggCreateUserReq为请求的参数ID值。第三行:结构体名称没有必要和swagger:parameters后的参数ID值保持一致,但推荐命名相同第四行注释:in:body或者in:query表示包含此参数的位置第五行为实际的内嵌结构
6. Create a new user with the profile. - 摘要(标题),在第一个句号.之前的是标题,如果没有句号,则这些注释会被作为描述
7. If the user’s id is “exists”…… - 描述,在第一个句号后面的为描述
8. responses - 说明返回类型。
9. 200: swaggNoReturnValue - 简写,表明200返回值为swaggNoReturnValue
10. 400: swaggBadReq - 简写,表示400返回值为swaggerBadReq

【说明】swagger:parameters & swagger:response已在上述操作中详细说明,不在叙述。

三、运行SwaggerUI

从Github swagger-ui中克隆项目到本地,然后拷贝其中的dist文件夹到我们的项目文件下。

其中dist文件夹即为克隆的项目中的dist;model.go为我们定义的swagger:parameters和swagger:response所在的文件;main.go为swaggerui的服务器文件。

修改swagger/swaggerui/dist/index.html中的url const ui = SwaggerUIBundle({ url: "./swagger.user.json", dom_id: '#swagger-ui', ……}) 定义main.go package mainimport "net/http"func main() {fs := http.FileServer(http.Dir("swagger/swaggerui/dist"))http.Handle("/swaggerui/", http.StripPrefix("/swaggerui/", fs))http.ListenAndServe(":8000", nil)} 启动服务器
在项目根目录下:go run swagger/swaggerui/main.go 四、效果图

打开浏览器localhost:8000/swaggerui/


swaggerui的动态交互并没有实现,只是将其作为API的展示文档,还需要进一步的学习。

参考链接:
https://www.ribice.ba/serving-swaggerui-golang/
https://www.ribice.ba/swagger-golang/

猜你喜欢

  • 背压阀定义,背压阀选型的4个要素

    背压阀安装在出口管道上,用于防止液体回流,背压阀用于保持计量泵出口有一恒定压力,为计量泵创造良好的工作环境并改善泵的工作性能。背压阀选型时要注意哪些事项?1、所需背压阀的口径,一般是泵出口的管径;2、所需设定的压力范围;3、需要什么材质的,

  • 风机的基本性能参数有哪些 低压风机的性能以及性能要求有哪些?

    低压风机的性能主要就是节能,对于我国低压风机性能的分析对比,在运行的经济性方面与以前的低压风机没有什么区别,也没有多少起伏性,而相对于低压风机的性能来说,就具有非常大的发展以及创新,比如在送风的距离,比如在风量的变化幅度,比如在技术的发展状

  • 高压离心鼓风机的参数有哪些 高压离心鼓风机的参数

    参数是很多机械设置或维修上能用到的一个选项,字面上理解是可供参考的数据,但有时又不全是数据。对指定应用而言,高压风机厂家可以是赋予的常数值;在泛指时,它可以是一种变量,用来控制随其变化而变化的其他的量。简单说,参数是给我们参考的。那么高压风

  • 高压风机参数 标准规格高压风机的选择可以从哪些方面入手

    与其它机械零件相比,高压旋涡风机的规格种类较多,品种较多,因此客户在选择产品类型时会比较苦恼,因此建议客户选择合适的高压风机,可以直接将各种配置配置成可供客户使用的高压风机。那标准规格的高压风机可以从哪些方面着手?一、选择承轴型号通用。标准

  • wq系列潜水排污泵型号_WQ潜水排污泵型号参数及含义

    潜污泵从字面上就能理解是潜水式的污水泵,常见的就是WQ型潜水排污泵,全称是WQ潜水式高效无堵塞排污泵。这里给大家做一些型号含义。一、型号参数及含义。Q:潜水W:排污G:管道Y:自吸L:垂直P:不锈钢B:防爆JY:搅匀像JYWQ

  • 离心泵汽蚀的定义_什么是离心泵汽蚀?

    被输送液体汽化时的压力称为汽化压力(饱和蒸汽压力),液体汽化压力的大小一般和温度有关,温度越高,由于液体分子运动更剧烈,其汽化压力越大。20℃清水的汽化压力为233.8Pa,而100℃水的汽化压力为101296Pa(一个大气压)。可见,一定