如何使用Swagger2

  • 接口文档访问接口:http://localhost:8080/swagger-ui.html

分析和效果演示

  • 分析
    在这里插入图片描述
  • 效果
    在这里插入图片描述

配置

pom.xml

 <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

配置类

  • 实现WebMvcConfigurer 接口
  • 要填自己的控制器位置路径
  • 若打算关闭显示则在以下 return new Docket(DocumentationType.SWAGGER_2)最后面加.enable(false); (一般用于环境区分,线上环境就不显示)
@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {

    @Bean
    public Docket productApi() {
        //添加head参数start
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<Parameter>();
        tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
        pars.add(tokenPar.build());
        return new Docket(DocumentationType.SWAGGER_2).select()
                // 扫描的包路径
                .apis(RequestHandlerSelectors.basePackage("com.edt.trip.controller"))
                // 定义要生成文档的Api的url路径规则
                .paths(PathSelectors.any())
                .build()
                .globalOperationParameters(pars)
                // 设置swagger-ui.html页面上的一些元素信息。
                .apiInfo(metaData());
    }

    private ApiInfo metaData() {

        return new ApiInfoBuilder()
                // 标题
                .title("SpringBoot集成Swagger2")
                // 描述
                .description("豪行天下项目接口文档")
                // 文档版本
                .version("1.0.0")
                .license("Apache License Version 2.0")
                .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0")
                .build();
    }

    //ui页面
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

使用

  • 使用用户对象操作做演示

控制器

  • @Api(value = "用户资源", description = "用户资源控制器") 说明控制器
    在这里插入图片描述

控制器方法

  • @ApiOperation(value = "注册功能", notes = "其实就是新增用户")说明方法
  • @ApiImplicitParams({ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true) }) 说明参数
    在这里插入图片描述
  • @ApiResponses({ @ApiResponse(code = 200, message = "用户注册成功") })
    • 用在@ApiResponses中,一般用于表达一个错误的响应信息(200相应不写在这里面)
      code:数字,例如400
      message:信息,例如"请求参数没填好"
      response:抛出的异常类
      在这里插入图片描述
  • @ApiIgnore 在接口方法上,表示不显示此接口在文档上

实体类

  • @Api(value = "用户",description = "平台注册用户模型")说明对象
  • @ApiModelProperty(value="昵称",name="nickName",dataType = "String",required = true) 说明属性
    在这里插入图片描述

拦截处理

  • 一些项目会有拦截器类拦截路径,所以要配置开放该swagger接口文档url
  • 拦截器的类 重写以下addInterceptors方法即可
@Configuration
public class WebConfigurer extends WebMvcConfigurationSupport {

    @Resource
    private DateConverterConfig dateConverterConfig;

    @Resource
    private SecurityControlInterceptor securityControlInterceptor;

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        //定义排除swagger访问的路径配置
        String[] swaggerExcludes=new String[]{"/swagger-ui.html","/swagger-resources/**","/webjars/**"};
        securityControlInterceptor.init();// 初始化数据
        registry.addInterceptor(securityControlInterceptor).addPathPatterns("/**").excludePathPatterns(swaggerExcludes);
        super.addInterceptors(registry);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }


    @Override
    protected void addFormatters(FormatterRegistry registry) {
        registry.addConverter(dateConverterConfig);
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值