1. 程式人生 > >springboot 2 整合swagger2 以及遇到的一些坑

springboot 2 整合swagger2 以及遇到的一些坑

注意:不同版本可能會遇到的坑不一樣,所以請儘量保持版本一致。

依賴

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

springboot 配置

package com.ysk.mybatiscrack.config;

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; /** * 描述 * * @author Y.S.K * @date 2018/6/9 11:46 */ @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() // 自行修改為自己的包路徑 .apis(RequestHandlerSelectors.basePackage("com.ysk.mybatiscrack")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("swagger-api文件") .description("swagger接入教程") //服務條款網址 .termsOfServiceUrl("https://blog.csdn.net/ysk_xh_521") .version("1.0") .contact(new Contact("Y.S.K", "http://ysk521.cn", "[email protected]")) .build(); } }

其實到這個時候已經整合好了,剩下就是註解的使用了。

先來一個可以用的

/**
 * @Api:用在請求的類上,表示對類的說明
    tags="說明該類的作用,可以在UI介面上看到的註解"
    value="該引數沒什麼意義,在UI介面上也看到,所以不需要配置"
 * @author Y.S.K
 *
 */
@Api(value="/test1", tags="測試介面模組")
@RestController
@RequestMapping("/test")
public class TestSwaggerController {

    /**
     * @ApiOperation:用在請求的方法上,說明方法的用途、作用
    value="說明方法的用途、作用"
    notes="方法的備註說明"
@ApiImplicitParams:用在請求的方法上,表示一組引數說明
    @ApiImplicitParam:用在@ApiImplicitParams註解中,指定一個請求引數的各個方面
        name:引數名
        value:引數的漢字說明、解釋
        required:引數是否必須傳
        paramType:引數放在哪個地方
            · header --> 請求引數的獲取:@RequestHeader
            · query --> 請求引數的獲取:@RequestParam
            · path(用於restful介面)--> 請求引數的獲取:@PathVariable
            · body(不常用)
            · form(不常用)    
        dataType:引數型別,預設String,其它值dataType="Integer"       
        defaultValue:引數的預設值

@ApiResponses:用在請求的方法上,表示一組響應
    @ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應資訊
        code:數字,例如400
        message:資訊,例如"請求引數沒填好"
        response:丟擲異常的類

@ApiModel:用於響應類上,表示一個返回響應資料的資訊
            (這種一般用在post建立的時候,使用@RequestBody這樣的場景,
            請求引數無法使用@ApiImplicitParam註解進行描述的時候)
    @ApiModelProperty:用在屬性上,描述響應類的屬性
     * @return
     */
    @ApiOperation(value="展示首頁資訊value", notes = "展示首頁資訊notes")
    @GetMapping("/show")
    public Object showInfo(){
        return "hello world";
    }

    @ApiOperation(value="新增使用者資訊", notes = "新增使用者資訊")
    @ApiImplicitParam(name="user", value="User", required = true, dataType = "User")
    @PostMapping("/addUser")
    public Object addUser(@RequestBody User user){
        return "success";
    }

}

遇到的一些坑

@RequestMapping(“/test”)

Api(value="/test", tags="測試介面模組")
@RestController
public class CrackController {
    @GetMapping("/test")
    public JSON crack(){
        return JsonBuilder.builder().put("validTo",Long.parseLong("111111111111111")).put("valid",true).build();
    }
    @GetMapping("/")
    public JSON index(){
        return JsonBuilder.builder().put("aaa",Long.parseLong("111111111111111")).put("valid",true).build();
    }

    @ApiOperation(value="獲取使用者列表value", notes="獲取使用者列表notes")
    @GetMapping("/{id}")
    public Object cracqk(){
        return "1342";
    }
}

上面是我剛開始寫的是沒有上面那個紅色的部分的,然後就會出現下面這個問題,啥都不顯示。
這裡寫圖片描述

原因分析

其實主要還是自己把自己坑了,下面我的那個controller 方法寫的有問題。

 @ApiOperation(value="獲取使用者列表value", notes="獲取使用者列表notes")
    @GetMapping("/{id}")
    public Object cracqk(){
        return "1342";
    }

就是這個,他會預設把http://localhost:9998/swagger-ui.html ,後面紅色部分當做引數傳進來,導致的-,-,好了,現在問題解決了。

下一個問題

如果出現 No mapping found for HTTP request with URI [/swagger-ui.html]
解決辦法如下

@Configuration
@EnableWebMvc
public class WebMvcConfigurerConfig implements WebMvcConfigurer {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.setAllowCredentials(true);
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");

        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }

    @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/");

    }
}

swagger註解

swagger通過註解表明該介面會生成文件,包括介面名、請求方法、引數、返回資訊的等等。

@Api:修飾整個類,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個介面
@ApiParam:單個引數描述
@ApiModel:用物件來接收引數
@ApiProperty:用物件接收引數時,描述物件的一個欄位
@ApiResponse:HTTP響應其中1個描述
@ApiResponses:HTTP響應整體描述
@ApiIgnore:使用該註解忽略這個API
@ApiError :發生錯誤返回的資訊
@ApiImplicitParam:一個請求引數
@ApiImplicitParams:多個請求引數

相關推薦

springboot 2 整合swagger2 以及遇到的一些

注意:不同版本可能會遇到的坑不一樣,所以請儘量保持版本一致。 依賴 <dependency> <groupId>io.springfox</groupId>

Spring Cloud 整合 Swagger2 以及遇到的

一、引入依賴: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <ve

springBoot(12)---整合Swagger2

Spingboot整合Swagger2         隨著網際網路技術的發展,一般開發都是前後端分離,那麼前端和後端的唯一聯絡,變成了API介面;API文件變成了前後端開發人員聯絡的紐帶,變得越來越重要,沒有API 文件工具之前,大家都是手寫API文件的,在什麼地方書寫的都有,有在confluence上

系統應用整合過程中的一些

這次想來講講系統應用整合過程中遇到的一些坑,尤其是 so 檔案相關的坑。 背景 埋這些坑的最初來源是由於測試人員在整合新終端裝置時提了個 bug: app 在這個裝置上無法啟動。 隨後拋來了一份日誌,過濾了下,最重要的其實就一條,crash 日誌: java.lang.UnsatisfiedLinkError

SpringBoot簡單整合Swagger2

Swagger是什麼 Swagger 是一系列 RESTful API 的工具,通過 Swagger 可以獲得專案的一種互動式文件,客戶端 SDK 的自動生成等功能。 使用 Spring Boot 整合 Swagger 的理念是,使用註解來標記出需要在 AP

spring mvc 4.2 整合 swagger2

Swagger是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。檔案的方法,引數和模型緊密整合到伺服器端的程式碼,允許API來始終保持同步。 1.引入swagger2的mav

springboot專案整合Swagger2

    不僅僅是springboot,其他spring專案均可整合swagger,在專案開發中,眾多的介面都要有介面文件,並且很容易出現紕漏和程式碼與文件不一致的情況,利用swagger來自動生成api文件,讓程式碼維護與文件維護保持一致,大大減少文件編寫和維護

springboot2.0整合工作流activiti6.0,以及與業務整合時的一些

1、首先,要在springboot工程的pom檔案中引入相關jar包 <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-

SpringBoot 2.0.5簡單整合Spring Security遇到的

SpringBoot整合Security的部落格案例網上已經很多了,但個人覺得對於一個初次整合Security的同學來說,一個簡單的案例還是很有必要的。為此,上傳一個本人整合的案例,僅供大家參考,也為自己記錄一下,話不多說,表演開始。 版本介紹:SpringBoot 2.0

二、SpringBoot 整合 swagger2 (swagger2 版本 2.8.0)

(一)新增依賴 <swagger.version>2.8.0</swagger.version> <!-- swagger2 restful api 文件 start --> <dependency> <gro

springboot 2.X 整合redis 以及快取@Cacheable

【前言】針對系統中的查詢比較頻繁的熱點資料做快取,注意不是類似資料庫的二級快取哦,spring的Cacheable這個註解可以對方

同時集成百度地圖、定位以及導航遇到的一些

so文件 成了 自己 sel ear 模擬 images 謝謝 function 項目用到的地圖功能有點多,同時集成了地圖、定位以及導航這幾個功能。 每個單獨使用,都很順利,但合在一起用會有問題。 我每次集成百度地圖,都會在http://lbsyun.baidu.com/s

SpringBoot 2.SpringBoot整合Mybatis

string map res iba tis com roo batis 哈哈哈 一、創建Springboot的配置文件:application.properties SpringApplication 會從 application.properties 文件中加載配置信

SpringBoot整合Swagger2簡單的例子

設定 tro -c fault rip comment sed itl java Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密

5分鐘 springboot 整合swagger2

sed des resources text def mutable rod contact println springboot 整合swagger2 1.maven配置文件中添加依賴 <properties> <swagger2.version

03、Swagger2和Springmvc整合詳細記錄(爬記錄)

component 效果 ges context tex ron 問題 package amp 時間 內容 備註 2018年6月18日 基本使用 spirngmvc整合swagger2 開始之前這個系列博文基本是,在項目的使用中一些模塊的內容記錄,但是

SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle簡單整合

png etc type .com () 簡單 import true not 記錄一下SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle整合的一個小例子。 1.在Gradle內加入相關jar包的依賴: com

zookeeper集群查看狀態時報錯Error contacting service. It is probably not running的一些以及解決辦法

暫時 關機重啟 ron emc img 坑爹 .com 輸出日誌 off 最近在搭建mq集群時候需要用到,zookeeper,可是啟動的時候顯示成功了,查看狀態的時候卻報錯了: 碰到這個問題也是研究好好半天才解決,這裏就總結出一個快速解決辦法! 首先,必須看日誌: 報錯

小程序canvas使用,及一些以及自己的一些小總結

開發 背景圖 height java gda 數據 利用 let 宋體 自己做了一個小程序,主要用於給頭像加圖標的那種,和qq似的,主要用canvas做的, 第一回用,掉了很多坑,所以今天系統的總結一下自己所做的,如果大家有不理解的地方,歡迎提問 canvas可以用來畫一

(六)SpringBoot整合Swagger2框架

url selector use contact text exceptio pid urn 自動生成 一:什麽是Swagger Swagger是一款通過我們添加的註解來對方法進行說明,來自動生成項目的在線api接口文檔的web服務。 二:添加Swagger2依賴 <