SpringBoot整合swagger


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即可访问)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值