1.swagger2.7Maven依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
2.application.properties中加入此配置。建议线上部署时关闭
#swagger
swagger.enable: true
3.swagger配置类
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* swagger2的配置文件
* @return docket
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
//扫描controller包
.apis(RequestHandlerSelectors.basePackage("com.luoyun.cun.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* 生成一些简单的描述信息
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("训练模块 RESTful API")
//创建人 /url /邮箱
.contact(new Contact("jiazw", "www.baidu.com", "xxx@163.com"))
//版本号
.version("1.0.0")
//描述
.description("本模块主要是为训练任务提供后台复杂计算接口。")
.build();
}
}
4.在controller里使用注解配置接口信息
Swagger使用的注解及其说明:
@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
l code:数字,例如400
l message:信息,例如"请求参数没填好"
l response:抛出异常的类
@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
l @ApiModelProperty:描述一个model的属性
注意:@ApiImplicitParam的参数说明:
paramType:指定参数放在哪个地方 | header:请求参数放置于Request Header,使用@RequestHeader获取 query:请求参数放置于请求地址,使用@RequestParam获取 path:(用于restful接口)-->请求参数的获取:@PathVariable body:(不常用) form(不常用) |
name:参数名 |
|
dataType:参数类型 |
|
required:参数是否必须传 | true | false |
value:说明参数的意思 |
|
defaultValue:参数的默认值 |
|
案列如下:
@ApiOperation(value="制定为期30天的训练视频",notes="根据用户id;填写自定义问卷答案的id;选择的训练日期集合;制定计划")
@ApiImplicitParams({
@ApiImplicitParam(name="uid",value="用户id",required=true,dataType="int",paramType="path"),
@ApiImplicitParam(name="aid",value="自定义问卷答案accessid",required=true,dataType="int",paramType="path"),
@ApiImplicitParam(name="days",value=" 例子:1,2,3,4 代表4天周日期集合。 SUNDAY = 1; MONDAY = 2;TUESDAY = 3;WEDNESDAY = 4;THURSDAY = 5;FRIDAY = 6;SATURDAY = 7",required=true,dataType="String",paramType="path")
})
@ResponseBody
@RequestMapping(value = "/trainingPlan/{uid}/{aid}/{days}", method = RequestMethod.GET)
public R_TrainingCustom getTrainingPlan(@PathVariable int userid,
@PathVariable int accessid,
@PathVariable("days") String days) {
5.启动项目:
6.ui页面