欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳談Springfox與swagger的整合使用

 更新時間:2017年08月01日 14:11:30   投稿:jingxian  
下面小編就為大家?guī)硪黄斦凷pringfox與swagger的整合使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、前言

讓我們先理一下springfoxswagger的關(guān)系。

swagger是一個流行的API開發(fā)框架,這個框架以“開放API聲明”(OpenAPI Specification,OAS)為基礎(chǔ),對整個API的開發(fā)周期都提供了相應(yīng)的解決方案,是一個非常龐大的項目(包括設(shè)計、編碼和測試,幾乎支持所有語言)。

OAS本身是一個API規(guī)范,它用于描述一整套API接口,包括一個接口是GET還是POST請求啊,有哪些參數(shù)哪些header啊,都會被包括在這個文件中。它在設(shè)計的時候通常是YAML格式,這種格式書寫起來比較方便,而在網(wǎng)絡(luò)中傳輸時又會以json形式居多,因為json的通用性比較強。

由于Spring的流行,Marty Pitt編寫了一個基于Spring的組件swagger-springmvc,用于將swagger集成到springmvc中來。而springfox則是從這個組件發(fā)展而來,同時springfox也是一個新的項目,本文仍然是使用其中的一個組件springfox-swagger2。

pringfox-swagger2依然是依賴OSA規(guī)范文檔,也就是一個描述APIjson文件,而這個組件的功能就是幫助我們自動生成這個json文件,我們會用到的另外一個組件springfox-swagger-ui就是將這個json文件解析出來,用一種更友好的方式呈現(xiàn)出來。

這是入門,我們簡單地介紹springfox-swagger2的配置,幫助各位順利地實現(xiàn)使用,文中有很多自己的理解,若有錯誤,歡迎批評指正。

二、配置流程說明

在開始編碼之前,我們先對配置的流程有個大致的了解。

在前言中,我們知道,我們的第一個任務(wù)就是生成一個滿足OSA規(guī)范的json文件(當然,創(chuàng)建一個spring的項目就不說了)。對于這個任務(wù),springfox為我們提供了一個Docket(摘要的意思)類,我們需要把它做成一個Bean注入到spring中,顯然,我們需要一個配置文件,并通過一種方式(顯然它會是一個注解)告訴程序,這是一個Swagger配置文件。

一個OSA規(guī)范文檔需要許多信息來描述這個API,springfox允許我們將信息組合成一個ApiInfo的類,作為構(gòu)造參數(shù)傳給Docket(當然也可以不構(gòu)造這個類,而直接使用null,但是你的這個API就太low了)。

接下來,我們要寫控制器了,當然這不重要,不用springfox你依然要寫控制器,重要的是要告訴springfox,這個控制器是一個需要他來收集API信息的控制器,不用說,這依然會采用注解的方式,同時,我們?yōu)榱藢⑴渲梦募c控制器結(jié)合起來,需要在配置文件中指明在什么位置收集可能是API的控制器的信息。

到這里,生成OSA規(guī)范的json文件的配置就結(jié)束了。雖然生成過程比我敘述的更復(fù)雜,但這些程序都會幫我們完成,我們可以通過類似http://localhost:8080/demo/v2/api-docs的路徑來查看這個json文件。這個v2/api-docs就是springfox默認的生成文檔的路徑。

接下來,我們需要將它可視化顯示出來,如果使用swagger-springmvc,我們需要單獨去下載一個swagger ui的顯示頁面包,并將其中的路徑改為上面的http://localhost:8080/demo/v2/api-docs,這里你就可以感受到,swagger ui就是在解析一個json文件了。你依然可以這么做,不過springfox專門提供了一個springfox-swagger-ui組件,不需要配置,我們只需要引入這個依賴的組件就可以看到最終的效果了,而這個路由會是http://localhost:8080/demo/swagger-ui.html。

三、引入依賴

如果我寫的不錯,相信看到這里,你就大致了解了springfox swagger2的使用流程了。那么,我們進入正式編碼的第一步:引入依賴。

這里我們使用maven引入依賴,大家可以到http://mvnrepository.com上搜索springfox,便可以看到Springfox Swagger2Springfox Swagger Ui,然后就可以從中獲取最新的資源了。如下:

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

此外還需要一個依賴組件:

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.6.6</version>
</dependency>
 

四、一個簡單的配置文件

為了清晰,我們可以先在常用的源碼包里建一個config目錄,并在里面創(chuàng)建一個SwaggerConfig.java文件,這是一個spring的配置文件,所以位置和文件名都影響不大。

先上代碼:

@Configuration //必須存在
@EnableSwagger2 //必須存在
@EnableWebMvc //必須存在
@ComponentScan(basePackages = {"com.xiaoming.SpringMVC.controller"}) //必須存在 掃描的API Controller package name 也可以直接掃描class (basePackageClasses)
public class SwaggerConfig{
 @Bean
 public Docket customDocket() {
  return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo());
 }

 private ApiInfo apiInfo() {
  Contact contact = new Contact("小明", "http://www.dbjr.com.cn/", "zhaomin0018@126.com");
  return new ApiInfoBuilder()
    .title("前臺API接口")
    .description("前臺API接口")
    .contact(contact)
    .version("1.1.0")
    .build();
 }
}

由于各位肯定用的是IDE,這里就不寫各種import了。

首先,這個SwaggerConfig類有四個注解,看名稱就可以明白是什么意思。其中,@Configuration,@EnableWebMvc和@ComponentScan是Spring的注解,而@EnableSwagger2則是用來啟動Swagger支持,表示這是一個Spring Swagger的配置文件。

之后,定義了一個Bean方法CustomDocket,Spring中名字并不重要,重要的是它返回一個Docket類,DocumentationType.SWAGGER_2作為Docket構(gòu)造方法的參數(shù),指定了所用的swagger版本2.0,官網(wǎng)上已經(jīng)在預(yù)告3.0版本了。而之后的apiInfo則是調(diào)用接下來的apiInfo函數(shù),來創(chuàng)建Docket的信息。apiInfo函數(shù)采用ApiInfoBuilder來創(chuàng)建ApiInfo類。

五、一個控制器

其實,控制器不需要配置,就已經(jīng)會被springfox swagger識別了,不過我們這里象征性地加上一個描述信息:

@Controller
@RequestMapping("/test")
public class TestController {
 @ApiOperation(value="一個測試API",notes = "第一個測試api")
 @ResponseBody
 @RequestMapping(value = "/hello",method = RequestMethod.GET)
 public String hello()
 {
  return "hello";
 }
}
 

這里僅僅多了一個@ApiOperation注解,別的和一個普通的springmvc的控制器完全一致。

實際上,為了形成一個完整的api文檔,需要添加的注解常常很多,若是都寫在同一個文件里就會顯得臃腫,我們常常會寫一個接口文件,將注解都放在接口文件中,然后再用一個實體類來實現(xiàn)控制器,算是實現(xiàn)配置和邏輯分離了吧。

六、查看接口文件和文檔

若是沒有問題,現(xiàn)在可以部署項目,并打開http://localhost:8080/demo/v2/api-docs

Firefox提供了查看JSON的插件,推薦大家搜索試試看。

廢話不多說,這里可以看到之前配置的諸多信息。注入description,versiontitle等。并且確實有TestController的信息。

最后,我們打開http://localhost:8080/swagger-ui.html,便可以看到一個漂亮的界面了:

以上這篇詳談Springfox與swagger的整合使用就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳細了解MyBatis的異常處理機制

    詳細了解MyBatis的異常處理機制

    本文將對MyBatis的異常體系以及異常使用進行學習,MyBatis版本是3.5.6,作為一款成熟的ORM框架,MyBatis有自己一套成熟的異常處理體系,,需要的朋友可以參考下
    2023-06-06
  • 詳解Java利用深度優(yōu)先遍歷解決迷宮問題

    詳解Java利用深度優(yōu)先遍歷解決迷宮問題

    深度優(yōu)先遍歷:深度優(yōu)先遍歷是圖論中的經(jīng)典算法。其利用了深度優(yōu)先搜索算法可以產(chǎn)生目標圖的相應(yīng)拓撲排序表,采用拓撲排序表可以解決很多相關(guān)的圖論問題,如最大路徑問題等等。本文將利用深度優(yōu)先遍歷解決迷宮問題,感興趣的可以了解一下
    2022-02-02
  • Java8簡單了解Lambda表達式與函數(shù)式接口

    Java8簡單了解Lambda表達式與函數(shù)式接口

    這篇文章主要介紹了Java8簡單了解Lambda表達式與函數(shù)式接口,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • maven基礎(chǔ)教程——簡單了解maven的特點與功能

    maven基礎(chǔ)教程——簡單了解maven的特點與功能

    這篇文章主要介紹了Maven基礎(chǔ)教程的相關(guān)資料,文中講解非常細致,幫助大家開始學習maven,感興趣的朋友可以了解下
    2020-07-07
  • java命令調(diào)用虛擬機方法總結(jié)

    java命令調(diào)用虛擬機方法總結(jié)

    在本篇文章里我們給大家整理了關(guān)于java中的java命令如何調(diào)用虛擬機的方法和具體步驟,需要的朋友們跟著操作下。
    2019-05-05
  • java從文件中讀取數(shù)據(jù)的六種方法

    java從文件中讀取數(shù)據(jù)的六種方法

    本文主要介紹了java從文件中讀取數(shù)據(jù)的方法,詳細的介紹了六種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用Java將字節(jié)數(shù)組轉(zhuǎn)成16進制形式的代碼實現(xiàn)

    使用Java將字節(jié)數(shù)組轉(zhuǎn)成16進制形式的代碼實現(xiàn)

    在很多場景下,需要進行分析字節(jié)數(shù)據(jù),但是我們存起來的字節(jié)數(shù)據(jù)一般都是二進制的,這時候就需要我們將其轉(zhuǎn)成16進制的方式方便分析,本文主要介紹如何使用Java將字節(jié)數(shù)組格式化成16進制的格式并輸出,需要的朋友可以參考下
    2024-05-05
  • Java中Future接口詳解

    Java中Future接口詳解

    這篇文章主要介紹了Java中Future接口詳解,本文通過案例給大家詳細講解了Java中Future接口,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Spring注解之@Import的簡單介紹

    Spring注解之@Import的簡單介紹

    @Import是Spring基于Java注解配置的主要組成部分,下面這篇文章主要給大家介紹了關(guān)于Spring注解之@Import的簡單介紹,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • spring boot 集成dubbo的示例演示

    spring boot 集成dubbo的示例演示

    這篇文章主要介紹了spring boot 集成dubbo的示例演示,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論