springboot集成swagger过程解析

这篇文章主要介绍了springboot集成swagger过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

springboot集成swagger

1、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>

2、配置类:

@Configuration

@EnableSwagger2

public class SwaggerConfig {

@Bean

public Docket swaggerSpringMvcPlugin() {

return new Docket(DocumentationType.SWAGGER_2)

.select()

//加了ApiOperation注解的类,才生成接口文档

.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

.build();

}

}

3、controller相应的注解:@ApiOperation

@ApiOperation(value = "用户登录",notes = "")

@PostMapping("/loginOn")

public ResponseMessage loginOn(@RequestBody @Valid UserReq userReq){

ResponseMessage responseMessage = userServiceImp.loginOn(userReq);

return responseMessage;

}

最后本地默认访问:http://localhost:8080/swagger-ui.html

既可以看到相关接口效果图:

访问页失败的可能原因:

1》》访问方法本来就是404错误:在sprigboot中有个重要的概念叫做:约定优于配置:

springboot启动的时候如果没有指定扫描的包路径时,默认会去加载其当前包及子包下的组件,这里需要注意

如果把启动类放入service包下,页面就会访问不到:

2》》SwaggerConfig 类的写法有问题:Docket方法挺多的,这里需要注意:

@Configuration

@EnableSwagger2

public class SwaggerConfig {

@Bean

public Docket swaggerSpringMvcPlugin() {

return new Docket(DocumentationType.SWAGGER_2)

.select()

//加了ApiOperation注解的类,才生成接口文档

.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

.build();

}

}

3》》配置拦截器时是否进行了拦截:

在实现WebMvcConfigurer接口时,我们再配置拦截器时,需要对相应的请求进行过滤放行,比如静态资源,登录请求等

@Configuration

public class WebConfig implements WebMvcConfigurer {

/**

* 配置拦截器

* @param registry

*/

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new RequestInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login")

//排除swagger

.excludePathPatterns("/swagger-resources/**", "/webjars/**",

"/v2/**", "/swagger-ui.html/**");

}

}

有的代码是通过重写WebMvcConfigurer的addResourceHandlers方法:

/**

* 添加静态资源--过滤swagger-api (开源的在线API文档)

* @param registry

*//*

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

//过滤swagger

registry.addResourceHandler("swagger-ui.html")

.addResourceLocations("classpath:/META-INF/resources/");

registry.addResourceHandler("/webjars/**")

.addResourceLocations("classpath:/META-INF/resources/webjars/");

registry.addResourceHandler("/swagger-resources/**")

.addResourceLocations("classpath:/META-INF/resources/swagger-resources/");

registry.addResourceHandler("/swagger/**")

.addResourceLocations("classpath:/META-INF/resources/swagger*");

registry.addResourceHandler("/v2/api-docs/**")

.addResourceLocations("classpath:/META-INF/resources/v2/api-docs/");

}*

以上是 springboot集成swagger过程解析 的全部内容, 来源链接: utcz.com/z/339236.html

回到顶部