1. 程式人生 > >SpringBoot整合Swaggerui及問題解決

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

二、問題及解決方案

(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不相容

相關推薦

SpringBoot整合Swaggerui問題解決

目前在做前後臺分離專案的後臺介面部分,故在springboot中引入了swaggerui來做restful介面測試。本文首先描述springboot整合swaggerui的過程,其次,講述本人在整合過程中遇到的問題及解決方案。一、springboot整合swaggerui(1

springboot整合mybatis封裝curd操作-配置文件

enabled () init tps github mys tde oos maven 1 配置文件 application.properties #server server.port=8090 server.address=127.0.0.1 server.ses

SpringBoot整合MyBatisThymeleaf

配置文件 target char 使用 otp head batis dmi 分離 http://www.cnblogs.com/ludashi/archive/2017/05/08/6669133.html 上篇博客我們聊了《JavaEE開發之SpringBoot工程的

SpringBoot 整合mybatis 使用generator,pageHelper外掛

SpringBoot 整合mybatis 及使用generator,pageHelper外掛 一.新建springBoot專案 next next next finish 二.pom檔案配置 <?xml version="1.0" encoding="UTF-8

2018 - SpringBoot 整合 Mybatis Freemarker 的使用

一、application.yml 配置如下 注:因為格式或編碼問題,如果出現以下錯誤 ERROR : Failed to load property source from location 'classpath:/application.yml' 1. 把註釋刪除  &

2018 - SpringBoot 整合 Mybatis Freemarker 的使用(二)

一、application.yml 配置如下 注:因為格式或編碼問題,如果出現以下錯誤 ERROR : Failed to load property source from location 'classpath:/application.yml' 1. 把註釋刪除  &

SpringBoot整合SwaggerUI自動生成介面文件

SpringBoot整合SwaggerUI自動生成介面文件 一、在pom.xml檔案裡新增SpringBoot的引用配置,程式碼如下: <dependency> <groupId>io.springfox</gro

springboot整合mybatismybatis generator工具使用

前言 mybatis是一個半自動化的orm框架,所謂半自動化就是mybaitis只支援資料庫查出的資料對映到pojo類上,而實體到資料庫的對映需要自己編寫sql語句實現,相較於hibernate這種完全自動化的框架我更喜歡mybatis,mybatis非常靈活,

SpringBoot整合redis簡單工具類使用

本篇文章只是簡單的SpringBoot整合redis及redis的簡單工具類 1.匯入pom檔案 <!--redis--> <dependency> <groupId>org.springframework.boot</gr

SpringBoot 整合 JWT 驗證+解決域名問題

什麼是JWT JSON Web Token(JWT)是一個開放的標準(RFC 7519),它定義了一個緊湊且自包含的方式,用於在各方之間以JSON物件安全地傳輸資訊。這些資訊可以通過數字簽名進行驗證和信任。可以使用祕密(使用HMAC演算法)或使用RSA的公鑰/私鑰對來對JWT

SpringBoot 整合 Mybatis Freemarker 的使用

一、application.yml 配置如下 注:因為格式或編碼問題,所以就把註釋去掉了 server: #servlet: #context-path: /springboot p

springboot系列十三、springboot整合swaggerUI

一、Swagger介紹 Swagger能成為最受歡迎的REST APIs文件生成工具之一,有以下幾個原因: Swagger 可以生成一個具有互動性的API控制檯,開發者可以用來快速學習和嘗試API。 Swagger 可以生成客戶端SDK程式碼用於各種不同的平臺上的實現。 Swagger 檔案

Springboot整合mybatis分頁查詢、定時任務)

整了一整天,看了一位前輩的部落格,在此基礎上加上本人的理解及創作,哪位前輩忘記了,望諒解!不多說,直接上程式碼。 以上是專案的整體結構,下面是pom.xml檔案資訊:<project xmlns="http://maven.apache.org/POM/4.0.0"

springboot整合thymeleaf常用標籤的使用方法

請結合springboot學習教程專案github地址 https://github.com/heng1234/spring-boot_one來理解 pom.xml <!-- 引入 thymeleaf 模板依賴 --> <dependency&g

springboot 整合websocket 以及解決tomcat叢集環境websocket共享問題

解決方案:使用redis訊息釋出訂閱解決多個tomcat應用伺服器下,連線不共享問題;具體如下 @Configuration public class WebSocketConfig {     //TODEO如果用外接tomcat,要註釋掉以下程式碼,否則啟動專案會

springboot整合mybatis-plus(解決引用jar包配置類不起作用問題)

新增依賴 <dependency> <groupId>org.springframework.boot</groupId> <

Springboot整合redisredis叢集

1、maven依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis

SpringBoot整合Mybatis分頁外掛pageHelper和事務

spring事務分類: 1.宣告事務 2.程式設計事務 spring事務原理:AOP技術 環繞通知進行攔截 使用spring事務的注意事項:不要Try。因為要將異常丟擲給外層 Springboot預設整合事務,只要在方法上加上@Transactional註解 pom.xml

idea中springboot整合mybatis找不到mapper介面的原因解決方法

整合網上以及開發時遇到的錯誤原因總結:路徑不對 1.maper.xml名稱空間不對應mapper介面的位置 2.xml方法名未對應上mappe接口裡面的方法名 、 3.mapper檔案未注入成功,也就是位置掃描錯誤。 4.如果都檢查完了,一定要檢查編譯後的檔

CAS5.3伺服器搭建SpringBoot整合CAS解決分散式系統安全

單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 當我們使用SpringCloud搭建分散式系統後,這些子系統是分別部署