您的位置:首页 > 编程语言 > Java开发

Spring Boot中使用Swagger2构建RESTful API文档

2018-03-26 15:13 656 查看

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

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

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

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

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

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>

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

@Configuration
@EnableSwagger2
public 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
注解来给参数增加说明:

@RestController
public class TestController {

@Autowired
private User user;

@ApiOperation(value = "获取员工列表",notes = "")
@ApiImplicitParam(name = "parm", value = "参数", required = true, dataType = "String")
@PostMapping(value = "/getUsers")
public ResponseEntity<JsonResult> getEmplsByOrgCode(String parm){
JsonResult result = new JsonResult();
System.out.println(parm);

List<UserInfo> 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程序,访问:http://localhost:8080/swagger-ui.html

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

  

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

“Try it out!”
按钮,即可完成了一次请求调用!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: