博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot中使用Swagger2生成RESTful API文档(转)
阅读量:6939 次
发布时间:2019-06-27

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

效果如下图所示:

添加Swagger2依赖

pom.xml中加入Swagger2的依赖

io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0

注意:如果是2.2版本的,有可能在右下角会出现错误,那么请升级为2.7版本的即可解决这个问题。

创建Swagger2配置类

Application.java同级创建Swagger2的配置类Swagger2

@Configuration@EnableSwagger2public class Swagger2 {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.jsoft.testspringboot.controller"))                .paths(PathSelectors.any())                .build();    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("Spring Boot中使用Swagger2构建RESTful APIs")                .description("更多Spring Boot相关文章请关注:http://easonjim.com/")                .termsOfServiceUrl("http://easonjim.com/")                .contact("EasonJim")                .version("1.0")                .build();    }}

如上代码所示,通过@Configuration注解,让Spring来加载该类配置。再通过@EnableSwagger2注解来启用Swagger2。

再通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)。

添加文档内容

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

@RestController@RequestMapping(value="/users")     // 通过这里配置使下面的映射都在/users下,可去除public class UserController {    static Map
users = Collections.synchronizedMap(new HashMap
()); @ApiOperation(value="获取用户列表", notes="") @RequestMapping(value={""}, method=RequestMethod.GET) public List
getUserList() { List
r = new ArrayList
(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的描述信息,如下图所示。

API文档访问与调试

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

说明:

Swagger2不仅可以用于Spring Boot项目,还可以用于Spring MVC。配置基本一致。

Maven示例:

 

参考:

(以上内容转自此篇文章)

(Spring MVC)

转载地址:http://ouvjl.baihongyu.com/

你可能感兴趣的文章
基础果然要牢记(一次失败的电面)
查看>>
suds 0.4 : Python Package Index
查看>>
Oracle等待事件:NULL EVENT
查看>>
OTN中文技术论坛清净的ORACLE讨论之地
查看>>
ADFS 2.0安装设置心得
查看>>
Zend Framework学习之过滤器Zend_Filter
查看>>
ACM-ICPC Live Archive 3031 Cable TV Network
查看>>
undefined reference to 'pthread_create'
查看>>
javascript练习:8-1对象声明和实例化
查看>>
给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?...
查看>>
hdu 1839(二分+最短路)
查看>>
oracle性能调优之ASH 活动会话的历史
查看>>
ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
查看>>
Nginx配置文件详细说明[转]
查看>>
Creating Extensible Applications With the Java Platform
查看>>
据说是月薪2W的笔试题
查看>>
SSO单点登录系列3:cas-server端配置认证方式实践
查看>>
ScrollUp – 超轻量的可定制的回到顶部 jQuery 插件
查看>>
SSH 网站制作之文件上传
查看>>
基于 Spring Security 的开源统一角色访问控制系统 URACS
查看>>