SpringBoot整合swagger

来源:互联网 发布:java 用模板导出excel 编辑:程序博客网 时间:2024/05/16 17:21

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@EnableSwagger2public 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代码

  下载地址  http://download.csdn.net/download/cn_hhaip/10012302

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")
publicclassMenuController extends BaseController {
     @RequestMapping(value ="/deleteRebootTime" , method = RequestMethod.POST)
    @ApiOperation(value="删除重启时间" )
    publicvoiddeleteRebootTime(HttpServletResponseresponse,@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即可访问)





原创粉丝点击