博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Swagger2构建强大的RESTful API文档(2)(二十三)
阅读量:6294 次
发布时间:2019-06-22

本文共 2664 字,大约阅读时间需要 8 分钟。

添加文档内容

在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,而描述主要来源于函数等命名产生,对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容。如下所示,我们通过@ApiOperation注解来给API增加说明、通过@ApiImplicitParams@ApiImplicitParam注解来给参数增加说明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@RestController
@RequestMapping
(value=
"/users"
)     
// 通过这里配置使下面的映射都在/users下,可去除
public 
class 
UserController {
 
    
static 
Map<Long, User> users = Collections.synchronizedMap(
new 
HashMap<Long, User>());
 
    
@ApiOperation
(value=
"获取用户列表"
, notes=
""
)
    
@RequestMapping
(value={
""
}, method=RequestMethod.GET)
    
public 
List<User> getUserList() {
        
List<User> r = 
new 
ArrayList<User>(users.values());
        
return 
r;
    
}
 
    
@ApiOperation
(value=
"创建用户"
, notes=
"根据User对象创建用户"
)
    
@ApiImplicitParam
(name = 
"user"
, value = 
"用户详细实体user"
, required = 
true
, dataType = 
"User"
)
    
@RequestMapping
(value=
""
, method=RequestMethod.POST)
    
public 
String postUser(
@RequestBody 
User user) {
        
users.put(user.getId(), user);
        
return 
"success"
;
    
}
 
    
@ApiOperation
(value=
"获取用户详细信息"
, notes=
"根据url的id来获取用户详细信息"
)
    
@ApiImplicitParam
(name = 
"id"
, value = 
"用户ID"
, required = 
true
, dataType = 
"Long"
)
    
@RequestMapping
(value=
"/{id}"
, method=RequestMethod.GET)
    
public 
User getUser(
@PathVariable 
Long id) {
        
return 
users.get(id);
    
}
 
    
@ApiOperation
(value=
"更新用户详细信息"
, notes=
"根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息"
)
    
@ApiImplicitParams
({
            
@ApiImplicitParam
(name = 
"id"
, value = 
"用户ID"
, required = 
true
, dataType = 
"Long"
),
            
@ApiImplicitParam
(name = 
"user"
, value = 
"用户详细实体user"
, required = 
true
, dataType = 
"User"
)
    
})
    
@RequestMapping
(value=
"/{id}"
, method=RequestMethod.PUT)
    
public 
String putUser(
@PathVariable 
Long id, 
@RequestBody 
User user) {
        
User u = users.get(id);
        
u.setName(user.getName());
        
u.setAge(user.getAge());
        
users.put(id, u);
        
return 
"success"
;
    
}
 
    
@ApiOperation
(value=
"删除用户"
, notes=
"根据url的id来指定删除对象"
)
    
@ApiImplicitParam
(name = 
"id"
, value = 
"用户ID"
, required = 
true
, dataType = 
"Long"
)
    
@RequestMapping
(value=
"/{id}"
, method=RequestMethod.DELETE)
    
public 
String deleteUser(
@PathVariable 
Long id) {
        
users.remove(id);
        
return 
"success"
;
    
}
 
}

  

完成上述代码添加上,启动Spring Boot程序,访问:

。就能看到前文所展示的RESTful API的页面。我们可以再点开具体的API请求,以POST类型的/users请求为例,可找到上述代码中我们配置的Notes信息以及参数user的描述信息,如下图所示。

alt

API文档访问与调试

在上图请求的页面中,我们看到user的Value是个输入框?是的,Swagger除了查看接口功能外,还提供了调试测试功能,我们可以点击上图中右侧的Model Schema(黄色区域:它指明了User的数据结构),此时Value中就有了user对象的模板,我们只需要稍适修改,点击下方“Try it out!”按钮,即可完成了一次请求调用!

此时,你也可以通过几个GET请求来验证之前的POST请求是否正确。

相比为这些接口编写文档的工作,我们增加的配置内容是非常少而且精简的,对于原有代码的侵入也在忍受范围之内。因此,在构建RESTful API的同时,加入swagger来对API文档进行管理,是个不错的选择。

转载于:https://www.cnblogs.com/MaxElephant/p/10232146.html

你可能感兴趣的文章
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>