吐槽了一阵公司提供的记录接口文档工具后,抽个空档时间搭了个RESTful风格的API文档Demo,感觉还不错,在这里记录一下,技术栈使用Spring Boot+Swagger2。
Swagger可以很轻松的整合到Spring Boot中,在代码里根据swagger语法打些标签,生成可预览的Api文档,减少了很多时间写API接口文档上,让维护文档和修改代码整合一体了,并且可以与Spring MVC程序配合组织出强大RESTful API文档,也能提供了强大的页面测试功能来调试测试每个接口。
![](./使用Swagger2构建RESTful API.jpg)
下面分步骤走一遍,简单记录一下。
创建Spring Boot项目,添加Swagger2依赖
在IDEA中创建Spring Boot项目,记得依赖勾选web
,项目是由maven
管理,在pom.xml
文件中添加依赖:springfox-swagger2和spring-swagger-ui,版本这里选择的2.5.0。
1 2 3 4 5 6 7 8 9 10 11 12
| <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</version> </dependency>
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.5.0</version> </dependency>
|
创建Swagger2配置类
在Application.java同级创建Swagger2的配置类Swagger2Config。
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
|
@Configuration @EnableSwagger2 public class Swagger2Config {
@Bean("welcome") public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("欢迎模块") .select() .apis(RequestHandlerSelectors.basePackage("com.space.controller")) .paths(PathSelectors.any()) .build(); }
private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot中使用Swagger2构建RESTful APIs") .description("这是一个Demo项目") .termsOfServiceUrl("http://localhost:9999/swagger-ui.html") .contact(new Contact("pross","https://pross.space","")) .version("1.0") .build(); } }
|
在代码中添加文档内容
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
| @RestController @RequestMapping(value = "/welcome") public class HelloController {
@ApiOperation(value = "第一个接口",notes = "欢迎语") @ApiImplicitParam(name = "name",value = "姓名",required = true,dataType = "String", paramType = "query") @RequestMapping(value = "/hello",method = RequestMethod.GET) public String hello(@RequestParam(name="name",defaultValue = "pross") String name){ return "hello "+name; }
@ApiOperation(value = "第二个接口",notes = "欢迎语2") @ApiImplicitParams({ @ApiImplicitParam(name = "name1",value = "姓名1",required = true,dataType = "String",paramType = "query"), @ApiImplicitParam(name = "name2",value = "姓名2",required = true,dataType = "String",paramType = "query") }) @RequestMapping(value = "/hello2",method = RequestMethod.POST) public String hello2(@RequestParam(name="name1",defaultValue = "pross1") String name1, @RequestParam(name="name2",defaultValue = "pross2") String name2){ return "hello "+name1+" and "+name2; } }
|
这里踩了一个坑,关于paramType参数的设置,这个属性是指定参数放的位置的。接口使用@RequestParam
获取参数的话需要指定paramType = "query"
。接口使用@PathVariable
获取,需指定paramType=path
。如果POST
请求,则包装的实体类需要@ApiModel
注解,字段需要@ApiModelProperty
注解。
完成上述步骤上,启动Spring Boot程序,访问http://localhost:8080/swagger-ui.html
(自动替换端口),就能看到文章开头展示的RESTful API的页面。我们可以再点开具体的API请求,看到我们定义的各种API信息。
API文档访问与调试
Swagger除了查看接口功能外,还提供了调试测试功能,我们可以在上图定义的白色空白出填写传入的name值即可,点击下方Try it out!
按钮,即可完成了一次请求调用!
完。