1. 程式人生 > >springboot整合 swagger

springboot整合 swagger

轉自:https://blog.csdn.net/xxoo00xx00/article/details/77163399

搭建環境:

  • 1,jdk1.8
  • 2,idea
  • 3,spring-boot-starter-parent版本1.5.6.RELEASE
  • 4,springfox-swagger2 And springfox-swagger-ui 版本2.2.2

1快速環境搭建

新建一個工程,file->new->Porject->Spring Initializr->next-如下圖所示(idea專業版本,社群版可以到git上覆制pom檔案)

這裡寫圖片描述

pom.xml檔案中新增如下內容(看清楚再複製,此處不是全部內容)

    <properties>
        ...
        <swagger.version>2.2.2</swagger.version>
        ...
    </properties>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version
>
${swagger.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${swagger.version}</version> </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在config目錄中新建swagger的配置檔案swaggerConfig.java

@EnableSwagger2
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com"))//掃描com路徑下的api文件
                .paths(PathSelectors.any())//路徑判斷
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("《----我是title-----》")//標題
                .description("《-----我是描述----》:http://www.google.com.hk")//描述
                .termsOfServiceUrl("http://www.google.com.hk")//(不可見)條款地址
                .contact(new Contact("zz","google.com.hk","[email protected]"))//作者資訊
                .version("6.6.6")//版本號
                .build();
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

新建實體類User,基本欄位如下

@ApiModel(value = "User得實體,----》",reference = "我是參考")
public class User {

    @ApiParam(value = "姓名--------------",required = true)
    private String name;
    //在swagger-ui.html#頁面中如果返回User,ModelModel Schema選項卡可見
    @ApiModelProperty(value = "id",dataType = "String")
    private String id;
     //在http://localhost:8080/v2/api-docs最後一行的實體可見
    @ApiModelProperty(value = "年齡----------",required = true)
    private Integer age;

    ...此處省略setget方法
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在controller包立新建TestController,內容如下


@Api(value = "API - VehiclesController", description = "使用者介面詳情")
@RestController
@RequestMapping("/test")
public class TestController {

    static Map<String, User> users = Collections.synchronizedMap(new HashMap<String,User>());


    @ApiOperation(value="獲取使用者列表", notes="")
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "Successful — 請求已完成"),
            @ApiResponse(code = 400, message = "請求中有語法問題,或不能滿足請求"),
            @ApiResponse(code = 401, message = "未授權客戶機訪問資料"),
            @ApiResponse(code = 404, message = "伺服器找不到給定的資源;文件不存在"),
            @ApiResponse(code = 500, message = "伺服器不能完成請求")}
    )
    @RequestMapping(value={""}, method= RequestMethod.GET)
    public List<User> getUserList() {
        List<User> r = new ArrayList<User>(users.values());
        return r;
    }

    ....此處省略n行程式碼
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

2常用註釋描述

上半部 
這裡寫圖片描述

下半部 
這裡寫圖片描述

下下部 
這裡寫圖片描述

3全部註釋列表

@Api 
Api 標記可以標記一個Controller類做為swagger 文件資源,使用方式

屬性名稱備註
valueurl的路徑值
tags如果設定這個值、value的值會被覆蓋
description對api資源的描述
basePath基本路徑可以不配置
position如果配置多個Api 想改變顯示的順序位置
producesFor example, “application/json, application/xml”
consumesFor example, “application/json, application/xml”
protocolsPossible values: http, https, ws, wss.
authorizations高階特性認證時配置
hidden配置為true 將在文件中隱藏

@ApiOperation每一個url資源的定義,使用方式

屬性名稱備註
valueurl的路徑值
tags如果設定這個值、value的值會被覆蓋
description對api資源的描述
basePath基本路徑可以不配置
position如果配置多個Api 想改變顯示的順序位置
producesFor example, “application/json, application/xml”
consumesFor example, “application/json, application/xml”
protocolsPossible values: http, https, ws, wss.
authorizations高階特性認證時配置
hidden配置為true 將在文件中隱藏
response返回的物件
responseContainer這些物件是有效的 “List”, “Set” or “Map”.,其他無效
httpMethod“GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”
codehttp的狀態碼 預設 200
extensions擴充套件屬性

@ApiParam標記 
public ResponseEntity createUser(@RequestBody @ApiParam(value = “user”, required = true) User user)

屬性名稱備註
name屬性名稱
value屬性值
defaultValue預設屬性值
allowableValues可以不配置
required是否屬性必填
access不過多描述
allowMultiple預設為false
hidden隱藏該屬性
example舉例子

@ApiImplicitParam對容器的描述

屬性名稱備註
name屬性名稱
value屬性值
defaultValue預設值
allowableValues可以不可配置
required是否屬性必填
access不可過多描述
allowMutiple預設為false
dataType資料型別
paramType引數型別

@ApiResponse

屬性名稱備註
codehttp的狀態碼
message描述
response預設響應類 Void
reference參考ApiOperation中配置
responseHeaders參考 ResponseHeader 屬性配置說明
responseContainer參考ApiOperation中配置

@ResponseHeader(name=”head1”,description=”response head conf”)

屬性名稱備註
name響應頭名稱
description頭描述
response預設響應類 Void
responseContainer參考ApiOperation中配置

4文件編寫規範建議

  • entity的描述

@ApiModel(description = “我是描述”,value = “使用者”) 
對實體的描述

description:在v2/api-docs的實體看到描述, 
value的值在@ApiImplicitParam註解中的dataType可用,

@ApiModelProperty(value = “使用者姓名”,required = true,dataType = “String”) 
private String name; 
對欄位的描述

value:1,入參和出參的ModelModel Schema選項卡可見,2,在v2/api-docs的實體欄位描述可見 
required:該屬性是否必填寫 
dataType:該欄位的資料型別

  • controller的描述

@Api(value = “API”, description = “使用者介面詳情”,tags=”A”) 
對controler的描述

value:訪問某個controller的url的根路徑值 
description:對於該controller的的大概描述 
tags:把api介面進行分分組

@ApiOperation(value = “獲取使用者詳細資訊”, notes = “根據url的id來獲取使用者詳細資訊”,httpMethod =”GET”) 
對該方法的描述

value:主頁面中對該介面的描述,位置在介面的最右邊 
notes:點開介面後,第一段描述。 
httpMethod:HTTP請求的動作名,可選值有:”GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”。

@ApiImplicitParam(name = “id”, value = “使用者ID”, required = true, dataType = “String”, paramType = “path”) 
對引數的描述,如果多個引數需要用@ApiImplicitParams對其進行包裹

name:引數名稱 
value:引數的簡短描述 
required:是否必須傳遞的引數 
dataType:引數型別,可以為類名,也可以為基本型別(String,int,Boolean) 
paramType:引數的傳入(請求)型別,可選的值有path, query, body, header or form。(如果在路徑中提取引數用path比如:在/A/{XXX}路徑中得到XXX的值)

@ApiParam(name = “user”, value = “userValue”, required = true) 
對引數元資訊的說明,一般這個註解只能被使用在JAX-RS 1.x/2.x的綜合環境下,和ApiImplicitParam註解類似

required:該引數是否必填 
value:該引數的簡短介紹

@ApiResponse(code = 200, message = “Successful — 請求已完成”) 
返回狀態碼的描述,如果有多個可以使用@ApiResponses註解進行包裹

code:伺服器返回的狀態碼 
message:伺服器返回狀態碼的簡短說明

sample:header中傳遞token

@ApiImplicitParams({@ApiImplicitParam(name = "TOKEN", value = "Authorization token", required = true, dataType = "string", paramType = "header")})
  • 1

5,注意事項:

  • 路徑引數比如一直傳遞 {id},需要在ApiImplicitParam註解中新增prameType=“path”
  • 版本問題,需要刪除m2裡面的jar包,2.2.2的swagger和1.5.6的spring-boot-prent才是絕配,試過很多最新的包,感覺多多少少都有點問題!
  • 入引數和出引數都能用到一個實體類,注意檢查@ApiModel的value屬性

6參考文件

可能還有其他沒有列出的參考文件,見諒

附上專案地址

相關推薦

Swagger springboot整合swagger

Swagger是一個簡單但功能強大的API表達工具,使用Swagger生成API,我們可以得到互動式文件。 pom.xml中依賴引入如下: <dependency> <groupId>io.springfox</group

SpringBoot學習筆記03——SpringBoot整合Swagger

1.新增pom依賴 向pom檔案中新增依賴 <!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-sw

springboot整合Swagger能夠自動生成介面api

1.新增pom <!--swagger2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</arti

swagger教程-springboot整合swagger

一.swagger簡介 1.swagger是什麼?         swagger是REST APIs介面文件生成工具,既然是REST介面那麼就和Sping Rest 搭上線了,swagger 可以生成一個具有互動性的API控制檯,開發者可以用來快

springboot整合swagger文件

swagger,中文“拽”的意思。它是一個功能強大的api框架,它的整合非常簡單,不僅提供了線上文件的查閱,而且還提供了線上文件的測試。另外swagger很容易構建restful風格的api,簡單優雅帥氣,正如它的名字。 一、引入依賴 <dependency>

SpringBoot整合Swagger問題整理

1、swagger版本與springboot版本 本專案使用的是Swagger版本是2.7.0,該版本對應的spring版本是4.3.10,所使用的SpringBoot版本在1.5.6.RELEASE版本左右都是可以的。一般版本差距太大才會導致衝突。 檢視控制檯並

springboot 整合swagger

1. 關於swagger 我們撰寫的介面文件,有面向內部開發者的,也有面向外部的。很多情況下文件和程式碼是分離的,有好處也有壞處。而當我們寫java專案想偷懶,想要自動生成介面文件時,swagger工具是個不錯的選擇。 在Golang中, godoc時標準化的工具,而java似乎沒這

SpringBoot整合Swagger生成介面文件

一、簡介 Swagger是一個功能強大的API框架,它支援線上文件的檢視以及線上文件的測試,方便我們前後端開發人員對接。Swagger使用起來也很簡單,只需要加入swagger對應的依賴以及在controller類以及方法中加入相應的註解說明,swagger就會幫我們自動生

springboot整合swagger遇到的坑

對工作中遇到的問題簡單的總結: 版本資訊:       springboot 2.0.5 加swagger2.2 問題描述:       在controller 中用@RequestBody註解接收引數時,會導致呼叫微服務介面的Fegin注入失敗;去掉@Request

SpringBoot整合Swagger

最近專案與前端對接時開始接觸Swagger。 Swagger:一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。檔案的方法,引數和模型緊密整合到伺服器端的程式碼,允許API來始

SpringBoot整合Swagger自動生成API文件

swagger用於定義API文件。 好處: 前後端分離開發 API文件非常明確 測試的時候不需要再使用URL輸入瀏覽器的方式來訪問Controller 傳統的輸入URL的測試方式對於post請求的傳參比較麻煩(當然,可以使用postman這樣的瀏覽器外掛)

Swagger自動介面文件生成框架————springboot整合swagger總結

swagger簡介: swagger是一款開源的api介面文件生成工具。 Swagger的專案主頁:https://swagger.io/    目前比較流行的做法是在程式碼中加入swagger相關的註釋,然後,利用小工具生成swagger.json或者swagger.y

SpringBoot整合Swagger測試api構建

@Author:SimpleWu 什麼是Swagger? Swagger是什麼:THE WORLD’S MOST POPULAR API TOOLING 根據官網的介紹: Swagger Inspector:測試API和生成OpenAPI的開發工具。Swagger Inspector的建立是為了

Springboot 整合 Swagger

Swagger是一個自動生成API文件的 框架,避免了傳統的手動編寫API文件,然後再發給前段的繁瑣。 首先: 1、新建一個Sping boot專案,引入以下依賴: <dependency> <groupId>io.spr

SpringBoot整合Swagger-ui

boot fig agg 隱藏 possible hid .html response des SpringBoot整合Swagger-ui 引入依賴 <dependency> <groupId>org.springframework.b

SpringBoot整合swagger以及swagger的運用

swagget需要的包: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactI

springboot整合 swagger

轉自:https://blog.csdn.net/xxoo00xx00/article/details/77163399搭建環境:1,jdk1.82,idea3,spring-boot-starter-parent版本1.5.6.RELEASE4,springfox-swag

有關springboot整合swagger遇到的坑

swagger配置類Rest介面:後臺報錯:No mapping found for HTTP request with URI [/swagger-ui] in DispatcherServlet with name 'dispatcherServlet'原因分析:這個錯誤

springboot 整合 swagger 介面文件

優缺點:     優點:省去額外的工作量 單獨去維護一套介面文件、配置簡單(僅使用幾個註解即可完成介面文件的編寫)、支援線上測試     缺點:額外的工作量(對於程式設計師來說) >>step one:新增依賴 <dependency>

六、springboot整合swagger

and 參考 ann 註解 yml pom 字段 mime artifact 六、springboot整合swagger 簡介 swagger 提供最強大,最易用的工具,以充分利用OpenAPI規範。 官網 : https://swagger.io/ 準備工作 pom.x