SpringBoot集成Swaggerui及问题解决


目前在做前后台分离项目的后台接口部分,故在springboot中引入了swaggerui来做restful接口测试。本文首先描述springboot集成swaggerui的过程,其次,讲述本人在集成过程中遇到的问题及解决方案。

一、springboot集成swaggerui

(1)pom文件中添加依赖

<!-- swaggerui相关依赖 -->
		<dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger2</artifactId>
           <version>2.7.0</version>
        </dependency>
        <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger-ui</artifactId>
           <version>2.7.0</version>
        </dependency>

(2)添加swaggerui配置类

package com.janis;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.basePackage("com.janis.controller"))
				.paths(PathSelectors.any()).build();
	}

	private ApiInfo apiInfo() { 
		return new ApiInfoBuilder().title("janis Manage Swagger RESTful APIs")
				.description("综合管理 Swagger API 服务")
				.termsOfServiceUrl("http://swagger.io/")
				.contact(new Contact("janis", "127.0.0.1", "[email protected]"))
				.version("1.0")
				.build();

	}

}

(3)在controller中添加swaggerui接口注解

@Api(value = "检查模板操作", description = "检查模板操作")
@Controller
@RequestMapping("/CheckTemplate")
public class CheckTemplateController {//类上添加注解                                                                                 
        //方法上添加注解                                                                                                                @ApiOperation(value = "查询检查模板主要信息")
	@RequestMapping(value = "/queryCheckTemplate/{pageNum},{pageSize}", method = RequestMethod.GET)
	@ResponseBody
	public CommonResponse<List<Checktemplate>> queryCheckTemplate(
			@ApiParam(name = "pageNum", value = "当前页数") @RequestParam(value = "pageNum", required = false, defaultValue = "1") int pageNum,
			@ApiParam(name = "pageSize", value = "每页数据量") @RequestParam(value = "pageSize", required = false, defaultValue = "1") int pageSize) {
		logger.info("查询检查模板主要信息");
		// 设置分页信息,分别是当前页数和每页显示的总记录数,一般在service冷处理
		PageHelper.startPage(pageNum, pageSize);
		CommonResponse<List<Checktemplate>> response = new CommonResponse<>(ResponseResultEnum.SUCCESS, "查询检查模板主要信息成功");
		try {
			response = checkTemplateService.queryCheckTemplate();
		} catch (Exception e) {
			response.setStatus(ResponseResultEnum.EXCEPTION);
			response.setException(ExceptionEnum.EXCEPTION_SYS);
			response.setMessage("查询检查模板主信息失败");
			logger.error("查询检查模板主要信息失败|{}", e.getMessage(), e);
			return response;
		}
		return response;
	}

常用swaggerui注解:

- @Api()用于类;
          表示标识这个类是swagger的资源
- @ApiOperation()用于方法;
            表示一个http请求的操作
- @ApiParam()用于方法,参数,字段说明;
             表示对参数的添加元数据(说明或是否必填等)
- @ApiModel()用于类
               表示对类进行说明,用于参数用实体类接收
- @ApiModelProperty()用于方法,字段
            表示对model属性的说明或者数据操作更改
- @ApiIgnore()用于类,方法,方法参数
          表示这个方法或者类被忽略
- @ApiImplicitParam() 用于方法
          表示单独的请求参数
- @ApiImplicitParams()  用于方法,包含多个 @ApiImplicitParam

(4)本地访问swaggerui。地址:http://localhost/swagger-ui.html

二、问题及解决方案

(1)本地访问时404

原因:springboot配置文件中设置了资源包路径:spring.resources.staticLocations=classpath:/res/

将此配置注释即可。若仍旧访问404,手动添加资源加载类:

package com.janis;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

//@Configuration
//@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");

        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");

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

    }
}

(2)访问成功,但是页面无内容

原因:浏览器版本问题,浏览器不兼容。更换浏览器或者升级浏览器即可。目前发现IE8不兼容


参考文献:https://blog.csdn.net/u014231523/article/details/76522486

猜你喜欢

转载自blog.csdn.net/sinat_27992659/article/details/80266974