>
>io.springfox >
>springfox-swagger2 >
>2.0.1 >
>
>
>com.google.guava >
>guava >
>
>
>org.springframework >
>spring-core >
>
>
>org.springframework >
>spring-beans >
>
>
>org.springframework >
>spring-context >
>
>
>org.springframework >
>spring-context-support >
>
>
>org.springframework >
>spring-aop >
>
>
>org.springframework >
>spring-tx >
>
>
>org.springframework >
>spring-orm >
>
>
>org.springframework >
>spring-jdbc >
>
>
>org.springframework >
>spring-web >
>
>
>org.springframework >
>spring-webmvc >
>
>
>org.springframework >
>spring-oxm >
>
>
>
>
>io.springfox >
>springfox-swagger-ui >
>2.0.1 >
>
@EnableWebMvc
@EnableSwagger2
@Configuration
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.qdp.controller")) // 注意修改此处的包名
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("接口列表 v1.1.0") // 任意,请稍微规范点
.description("大屏接口") // 任意,请稍微规范点
.termsOfServiceUrl("http://localhost:9098/swagger-ui.html") // 将“url”换成自己的ip:port
.contact("作者") // 无所谓(这里是作者的别称)
.version("1.1.0")
.build();
}
}
<!--加入 swagger2 资源文件-->
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/>
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>
/swagger*/**=anon
/v2/**=anon
/webjars/**=anon
类上添加
@Api(value = "市重大项目大屏接口")
方法上添加
@RequestMapping(value = "queryImportMainInfo",method = RequestMethod.POST)
@ApiOperation(value = "重点项目概况",httpMethod = "POST",notes = " \"completeInv\": 0, 项目完成投资\n" +
" \"investNum\": 0, 项目总投资\n" +
" \"planInv\": 0, 年度计划投资\n" +
" \"startNum\": 0, 已开工项目数\n" +
" \"rateNum\": 0, 开工率\n" +
" \"projectNum\": 0 项目个数")
@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:参数的默认值
代码示例
@Controller
@RequestMapping("/say")
@Api(value = "SayController|一个用来测试swagger注解的控制器")
public class SayController {
@ResponseBody
@RequestMapping(value ="/getUserName", method= RequestMethod.GET)
@ApiOperation(value="根据用户编号获取用户姓名", notes="test: 仅1和2有正确返回")
@ApiImplicitParam(paramType="query", name = "userNumber", value = "用户编号", required = true, dataType = "Integer")
public String getUserName(@RequestParam Integer userNumber){
if(userNumber == 1){
return "张三丰";
}
else if(userNumber == 2){
return "慕容复";
}
else{
return "未知";
}
}
@ResponseBody
@RequestMapping("/updatePassword")
@ApiOperation(value="修改用户密码", notes="根据用户id修改密码")
@ApiImplicitParams({
@ApiImplicitParam(paramType="query", name = "userId", value = "用户ID", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType="query", name = "password", value = "旧密码", required = true, dataType = "String"),
@ApiImplicitParam(paramType="query", name = "newPassword", value = "新密码", required = true, dataType = "String")
})
public String updatePassword(@RequestParam(value="userId") Integer userId, @RequestParam(value="password") String password,
@RequestParam(value="newPassword") String newPassword){
if(userId <= 0 || userId > 2){
return "未知的用户";
}
if(StringUtils.isEmpty(password) || StringUtils.isEmpty(newPassword)){
return "密码不能为空";
}
if(password.equals(newPassword)){
return "新旧密码不能相同";
}
return "密码修改成功!";
}
}