@@ -9,7 +9,8 @@ weight: 6
9
9
10
10
Swagger 是基于 OpenAPI 规范的 API 文档工具。
11
11
12
- > OpenAPI 是一个 API 规范,它的前身就是 Swagger 规范,目前最新的 OpenAPI 规范是 [ OpenAPI 3.0] ( https://swagger.io/docs/specification/about/ ) (也就是 Swagger 2.0 规范)。
12
+ > OpenAPI 是一个 API 规范,它的前身就是 Swagger 规范,目前最新的 OpenAPI
13
+ > 规范是 [ OpenAPI 3.0] ( https://swagger.io/docs/specification/about/ ) (也就是 Swagger 2.0 规范)。
13
14
14
15
## Swagger 编辑器
15
16
@@ -37,36 +38,36 @@ commit: ecf6f05b6ecc1b1725c8569534f133fa27e9de6b
37
38
38
39
` swagger ` 提供的子命令:
39
40
40
- | 子命令 | 描述 |
41
- | ---- | ---- |
42
- | diff | 对比两个 swagger 文档的差异 |
43
- | expand | 展开 swagger 定义文档中的 $ref |
44
- | flatten | 展平 swagger 文档 |
45
- | generate | 生成 swagger 文档,客户端,服务端代码 |
46
- | ini | 初始化一个 swagger 定义文档 |
47
- | mix | 合并 swagger 文档 |
48
- | serv | 启动 http 服务,用来查看 swagger 文档 |
49
- | validate | 验证 swagger 第一文件是否正确 |
41
+ | 子命令 | 描述 |
42
+ | ---------- | ---------------------------- |
43
+ | diff | 对比两个 swagger 文档的差异 |
44
+ | expand | 展开 swagger 定义文档中的 $ref |
45
+ | flatten | 展平 swagger 文档 |
46
+ | generate | 生成 swagger 文档,客户端,服务端代码 |
47
+ | ini | 初始化一个 swagger 定义文档 |
48
+ | mix | 合并 swagger 文档 |
49
+ | serv | 启动 http 服务,用来查看 swagger 文档 |
50
+ | validate | 验证 swagger 第一文件是否正确 |
50
51
51
52
### 使用
52
53
53
54
go-swagger 通过解析源码中的注释来生成 Swagger 文档。
54
55
55
56
注释语法:
56
57
57
- | 注释语法 | 描述 |
58
- | ---- | ----------|
59
- | swagger: meta | 定义全局基本信息 |
60
- | swagger: route | 定义路由信息 |
61
- | swagger: parameters | API 请求参数 |
62
- | swagger: response | API 响应参数 |
63
- | swagger: model | 可以复用的 Go 数据结构 |
64
- | swagger: allOf | 嵌入其他 Go 结构体 |
65
- | swagger: strfmt | 格式化的字符串 |
66
- | swagger: ignore | 需要忽略的结构体 |
58
+ | 注释语法 | 描述 |
59
+ | -------------------- | ----- ----------|
60
+ | swagger: meta | 定义全局基本信息 |
61
+ | swagger: route | 定义路由信息 |
62
+ | swagger: parameters | API 请求参数 |
63
+ | swagger: response | API 响应参数 |
64
+ | swagger: model | 可以复用的 Go 数据结构 |
65
+ | swagger: allOf | 嵌入其他 Go 结构体 |
66
+ | swagger: strfmt | 格式化的字符串 |
67
+ | swagger: ignore | 需要忽略的结构体 |
67
68
68
-
69
- ` swagger generate ` 命令会找到 ` main ` 函数,然后遍历所有源码文件,解析源码中与 Swagger 相关的注释,然后自动生成 ` swagger.json/swagger.yaml ` 文件。
69
+ ` swagger generate ` 命令会找到 ` main ` 函数,然后遍历所有源码文件,解析源码中与 Swagger
70
+ 相关的注释,然后自动生成 ` swagger.json/swagger.yaml ` 文件。
70
71
71
72
``` go
72
73
package main
@@ -93,7 +94,7 @@ func main() {
93
94
log.Fatal (r.Run (" :8081" ))
94
95
}
95
96
96
- // Create create a user.
97
+ // Create a user.
97
98
func Create (c *gin .Context ) {
98
99
var user api.User
99
100
if err := c.ShouldBindJSON (&user); err != nil {
@@ -133,19 +134,19 @@ package api
133
134
134
135
// User represents body of User request and response.
135
136
type User struct {
136
- // User's name.
137
- // Required: true
138
- Name string ` json:"name"`
137
+ // User's name.
138
+ // Required: true
139
+ Name string ` json:"name"`
139
140
140
- // User's nickname.
141
- // Required: true
142
- Nickname string ` json:"nickname"`
141
+ // User's nickname.
142
+ // Required: true
143
+ Nickname string ` json:"nickname"`
143
144
144
- // User's address.
145
- Address string ` json:"address"`
145
+ // User's address.
146
+ Address string ` json:"address"`
146
147
147
- // User's email.
148
- Email string ` json:"email"`
148
+ // User's email.
149
+ Email string ` json:"email"`
149
150
}
150
151
```
151
152
@@ -188,9 +189,8 @@ package docs
188
189
package docs
189
190
190
191
import (
191
- v1 " github.com/shipengqi/idm/api/apiserver/v1"
192
- metav1 " github.com/shipengqi/idm/api/meta/v1"
193
- " github.com/shipengqi/idm/internal/apiserver/contorller/v1/user"
192
+ v1 " github.com/shipengqi/idm/api/apiserver/v1"
193
+ metav1 " github.com/shipengqi/idm/api/meta/v1"
194
194
)
195
195
196
196
// swagger:route GET /users/{name} Users getUserRequest
@@ -216,57 +216,58 @@ import (
216
216
// List users request.
217
217
// swagger:parameters listUserRequest
218
218
type listUserRequestParamsWrapper struct {
219
- // in:query
220
- metav1.ListOptions
219
+ // in:query
220
+ metav1.ListOptions
221
221
}
222
222
223
223
// List users response.
224
224
// swagger:response listUserResponse
225
225
type listUserResponseWrapper struct {
226
- // in:body
227
- Body v1.UserList
226
+ // in:body
227
+ Body v1.UserList
228
228
}
229
229
230
230
// User response.
231
231
// swagger:response getUserResponse
232
232
type getUserResponseWrapper struct {
233
- // in:body
234
- Body v1.User
233
+ // in:body
234
+ Body v1.User
235
235
}
236
236
237
237
// swagger:parameters createUserRequest updateUserRequest
238
238
type userRequestParamsWrapper struct {
239
- // User information.
240
- // in:body
241
- Body v1.User
239
+ // User information.
240
+ // in:body
241
+ Body v1.User
242
242
}
243
243
244
244
// swagger:parameters deleteUserRequest getUserRequest updateUserRequest
245
245
type userNameParamsWrapper struct {
246
- // Username.
247
- // in:path
248
- Name string ` json:"name"`
246
+ // Username.
247
+ // in:path
248
+ Name string ` json:"name"`
249
249
}
250
250
251
251
// ErrResponse defines the return messages when an error occurred.
252
252
// swagger:response errResponse
253
253
type errResponseWrapper struct {
254
- // in:body
255
- Body response.Response
254
+ // in:body
255
+ Body response.Response
256
256
}
257
257
258
258
// Return nil json object.
259
259
// swagger:response okResponse
260
260
type okResponseWrapper struct {}
261
+
261
262
```
262
263
263
- - ` swagger:route ` :描述一个 API,格式为 ` swagger:route [method] [url path pattern] [?tag1 tag2 tag3] [operation id] ` ,tag 可以是多个,相同 tag 的 API 在 Swagger 文档中会被分为一组。operation id 会和
264
+ - ` swagger:route ` :描述一个 API,格式为 ` swagger:route [method] [url path pattern] [?tag1 tag2 tag3] [operation id] ` ,tag 可以是多个,相同 tag 的 API 在 Swagger 文档中会被分为一组。operation id 会和
264
265
` swagger:parameters ` 的定义进行匹配,就是该 API 的请求参数。
265
- ` swagger:route ` 下面的一行是该 API 的描述,需要以 ` . ` 为结尾。` responses: ` 定义了 API 的返回参数,例如当 HTTP 状态码是 200 时,返回 ` createUserResponse ` ,` createUserResponse ` 会和 ` swagger:response `
266
- 的定义进行匹配,匹配成功的 ` swagger:response ` 就是该 API 返回 200 状态码时的返回。
266
+ ` swagger:route ` 下面的一行是该 API 的描述,需要以 ` . ` 为结尾。` responses: ` 定义了 API 的返回参数,例如当 HTTP 状态码是 200 时,返回 ` createUserResponse ` ,` createUserResponse ` 会和 ` swagger:response ` 的定义进行匹配,匹配成功的 ` swagger:response ` 就是该 API 返回 200 状态码时的返回。
267
267
- ` swagger:response ` :定义了 API 的返回,格式为 ` swagger:response [?response name] ` .例如 ` getUserResponseWrapper ` 中有一个 ` Body ` 字段,其注释为 ` // in:body ` ,说明该参数是在 HTTP Body 中返回。
268
268
` swagger:response ` 上的注释是 response 的描述。` api.User ` 会被 go-swagger 解析为 Example Value 和 Model,不需要重复编写。
269
- - ` swagger:parameters ` :定义了 API 的请求参数,格式为 ` swagger:parameters [operationid1 operationid2] ` 。例如 ` userRequestParamsWrapper ` 。` userRequestParamsWrapper ` 上的注释是请求参数的描述。
269
+ - ` swagger:parameters ` :定义了 API 的请求参数,格式为 ` swagger:parameters [operationid1 operationid2] `
270
+ 。例如 ` userRequestParamsWrapper ` 。` userRequestParamsWrapper ` 上的注释是请求参数的描述。
270
271
271
272
进入 ` swagger ` 目录,执行如下命令,生成 Swagger API 文档:
272
273
0 commit comments