1、定义Swagger配置类SwaggerConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* swagger配置
* @author huanghaiping
* @data 2017年9月18日
*/
@Configuration
@EnableWebMvc
@EnableSwagger2
public class ApiConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
registry.addResourceHandler("/webjars/springfox-swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
}
@Bean
public Docket adminApi() {
return new Docket(DocumentationType.SWAGGER_2)
//.groupName("Guldan API")
.forCodeGeneration(true)
.pathMapping("/")
.select()
//.apis(RequestHandlerSelectors.basePackage("com.uboxol.guldan.upgrade.web"))
.paths(paths())
.build()
.apiInfo(apiInfo())
.useDefaultResponseMessages(false);
}
private Predicate<String> paths() { //过滤的接口
return Predicates.and(PathSelectors.regex("/.*"), Predicates.not(PathSelectors.regex("/error")));
}
private ApiInfo apiInfo() {
Contact contact = new Contact("huanghaiping", null, "huanghaiping@ubox.cn");
return new ApiInfoBuilder()
.title("Guldan Api Documents")
.description("Guldan Service")
.license("Guldan License")
.contact(contact)
.version("2.0.0")
.build();
}
}
2、修改默认的
Swagger的js和html页面
(1). api.doc.js代码
(2). docs.html代码
3、注解说明
- @Api:用在类上,说明该类的作用
- @ApiOperation:用在方法上,说明方法的作用
- @ApiImplicitParams:用在方法上包含一组参数说明
- @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
-
- paramType:参数放在哪个地方
-
- header-->请求参数的获取:@RequestHeader
- query-->请求参数的获取:@RequestParam
- path(用于restful接口)-->请求参数的获取:@PathVariable
- body(不常用)
- form(不常用)
- name:参数名
- dataType:参数类型
- required:参数是否必须传
- value:参数的意思
- defaultValue:参数的默认值
- @ApiResponses:用于表示一组响应
- @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
-
- code:数字,例如400
- message:信息,例如"请求参数没填好"
- response:抛出异常的类
- @ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
-
- @ApiModelProperty:描述一个model的属性
4、例子
@Slf4j
@Controller
@RequestMapping("/menu" )
@Api(value = "MenuController" ,tags = "MenuController" , description ="MenuController" )
public class MenuController extends BaseController {
@RequestMapping(value = "/deleteRebootTime" , method = RequestMethod.POST )
@ApiOperation(value= "删除重启时间" )
public void deleteRebootTime(HttpServletResponse response, @RequestBody DeleteRebootTimeParam param) throws Exception {
log.info("删除重启时间列表参数innerCode:{}" , param .getInnerCode());
int count = upgradeVmRebootService.deleteRebootTime(param .getInnerCode());
writeJSON( count, response );
}
}
5、
访问地址 http://127.0.0.1:14080/docs.html(访问项目下的docs.html即可访问)