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

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

  在开发rest api的时候,为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:

  1.由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。

  2.随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。

  为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档

  要使用Swagger2,首先要引入Swagger2的依赖:

io.springfox
springfox-swagger2
2.2.2
io.springfox
springfox-swagger-ui
2.2.2

  然后在springboot应用程序中创建Swagger2配置类:

@Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket createRestApi(){        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.ysl.controller"))                .paths(PathSelectors.any())                .build();    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("Spring Boot中使用Swagger2构建RESTful APIs")                .description("使用Swagger2创建rest api文档")                .termsOfServiceUrl("http://www.cnblogs.com/senlinyang")                .contact("ysl")                .version("V1.0")                .build();    }}

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

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

@RestControllerpublic class TestController {    @Autowired    private User user;    @ApiOperation(value = "获取员工列表",notes = "")    @ApiImplicitParam(name = "parm", value = "参数", required = true, dataType = "String")    @PostMapping(value = "/getUsers")    public ResponseEntity
getEmplsByOrgCode(String parm){ JsonResult result = new JsonResult(); System.out.println(parm); List
infos = new ArrayList<>(); infos.add(getUserInfo()); result.setContent(infos); result.setResult(true); return ResponseEntity.ok(result); } private UserInfo getUserInfo(){ UserInfo user = new UserInfo(); user.setAccountName("zqyang2"); user.setCompanyCode("01"); user.setCompanyEasId("UUk7nZNlR/WkDxQRNZZ2i8znrtQ="); return user; }}

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

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

  

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

转载于:https://www.cnblogs.com/senlinyang/p/8651247.html

你可能感兴趣的文章
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&amp;&amp;打表)
查看>>
MFC中CString.Format的详细用法
查看>>
JSON、JSONP、Ajax的区别
查看>>
AngularJS学习篇(一)
查看>>
【转载】 IP实时传输协议RTP/RTCP详解
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
两个数组的交集II
查看>>
SQL常用语句
查看>>
最新免费视频放送【冒着被开除的风险】
查看>>
http://www.admin10000.com/document/6436.html
查看>>
Linux系统的数据写入机制--延迟写入
查看>>
css3动画——基本准则
查看>>
解决BitmapData.draw()在fms流的跨域问题
查看>>
动手动脑02
查看>>