1. 程式人生 > >Swagger2+SpringMVC配置詳解

Swagger2+SpringMVC配置詳解

swagger是一個前後端api統一文件和測試框架,注意,不光是一個api文件,還可以測試怎麼使用呢 這裡慢慢道來,我們一般用的都是maven工程,所以這裡直接上maven依賴:

<!-- maven依賴 -->
>
<swagger.version>1.5.8</swagger.version>
<io.springfox.version>2.5.0</io.springfox.version>
<!-- swagger start -->

<dependency>
  <groupId>io.swagger</groupId>
  <artifactId>swagger-core</artifactId>
  <version>${swagger.version}</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>${io.springfox.version}</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>${io.springfox.version}</version>
</dependency>
<!-- swagger end -->

>

• 這裡我們需要注入SwaggerConfiguration配置,直接上程式碼:

/**
 * Created by max on 8/16/16.
 *
 */
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
    public Docket getApiInfo() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("outer api")
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .apiInfo(outApiInfo());
}
private ApiInfo outApiInfo() {
        return new ApiInfo(
                "mylearn 前後端介面-外部", // title 標題
                "外部介面文件", // description 描述 標題下
                "1.0.0", // version
                "http://mylearn/*", // termsOfService
                new Contact("xieyuebin","","
[email protected]
"), // contact "Apache 2.0", // licence "http://www.apache.org/licenses/LICENSE-2.0.html" // licence url ); } @Bean public UiConfiguration getUiConfig() { return new UiConfiguration( null,// url,暫不用 "none", // docExpansion => none | list "alpha", // apiSorter => alpha "schema", // defaultModelRendering => schema UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, // enableJsonEditor => true | false true); // showRequestHeaders => true | false }

這是對於文件的說明以及ui的一些配置:

• 然後我們還需要把swagger和spring mvc結合起來,首先在web.xml里加入swagger文件的訪問路徑:



default
/swagger-ui.html

• 然後我們在dispatch-servlet.xml里加入對swagger靜態資源jar包的訪問路徑如下:

這裡我們用到了我們前面定義的SwaggerConfiguration類

然後我們在controller和請求引數和返回引數里加入swagger提供的註解,直接上例子
入參:

/**
 * Created by max on 10/11/16.
 */
@ApiModel(description = "使用者請求表單")
public class UserForm {
@ApiModelProperty(value = "姓名", example = "maxTse",position = 1)
    private String username;
public String getUsername() {
        return username;
    }
public void setUsername(String username) {
        this.username = username;
    }
@Override
    public String toString() {
        return "UserForm{" +
                "username='" + username + '\'' +
                '}';
    }
}

返回值:

@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel
public class OutResult<T> implements Serializable {
@ApiModelProperty(value = "資料", example = "")
    public T data;
@ApiModelProperty(value = "狀態碼,0表示成功 其他表示失敗", example = "0")
    public int status;
@ApiModelProperty(value = "錯誤資訊", example = "操作成功")
    public String message = "";

controller:

/**
 * Created by max on 8/16/16.
 */
@Controller
@RequestMapping(value = "/test", consumes = "application/json", produces = "application/json")
public class TestController {
private static final Logger LOGGER = LoggerFactory.getLogger(TestController.class);
@ApiOperation(value = "swagger test", notes = "swagger test first", tags = {SwaggerConstants.TEST_TAG})
    @ResponseBody
    @RequestMapping(value = "/first", method = RequestMethod.POST)
    public OutResult<String> first(@RequestBody UserForm userForm) {
        LOGGER.info("first userForm={}", userForm);
        throw new RuntimeException("dd");
/*
        return OutResult.successResult(userForm.getUsername());
*/
    }

這裡挨個註解解釋下:

  1. @ApiModel 表明這是一個被swagger框架管理的model,用於class上

  2. @ApiModelProperty 這裡顧名思義,就是標註在被標註了

  3. @ApiModel的class的屬性上,這裡的value是對欄位的描述,example是取值例子,注意這裡的example很有用,對於前後端開發工程師理解文件起到了關鍵的作用,因為會在api文件頁面上顯示出這些取值來;這個註解還有一些欄位取值,可以自己研究,舉例說一個:position,表明欄位在model中的順序

  4. @ApiOperation標註在具體請求上,value和notes的作用差不多,都是對請求進行說明;tags則是對請求進行分類的,比如你有好幾個controller,分別屬於不同的功能模組,那這裡我們就可以使用tags來區分了,看上去很有條理

下面我們啟動專案,然後通過

url:localhost:8080/swagger-ui.html 來訪問。

就可以看到swagger文件介面了這裡是請求和返回結果的介面,看到這個介面是不是對剛才我們貼出來的具體例子裡的註解上的每個值有所瞭解了,一一對應便能瞭解他們的作用我們開始說了,這個不僅可以當文件使,而且還可以進行測試,沒錯,看看引數介面大家都知道了,實際上引數介面就在請求和返回結果的下面:

看到右上方的大紅框,就是我們的入參格式,注意,這裡是json格式的
然後我們可以在具體填入自己的請求引數後,點選下方的try it out按鈕,就可以進行測試了。


>

總結:使用swagger2.0框架大概這麼幾步:

1.新增maven依賴

2.編寫SwaggerConfiguration配置

3.web.xml裡新增swagger文件的訪問路徑,是靜態資源

4.新增相關的spring mvc配置

5.在請求的入參和返回值 以及具體的請求上新增相應的註解

6.啟動專案,訪問swagger.html

注意:

由於這裡使用的是json格式的入參和返回值,那麼我們在controller的請求引數那裡要加上@RequestBody註解,並且請求方法必須是post。

官方文件:

相關推薦

Swagger2+SpringMVC配置

swagger是一個前後端api統一文件和測試框架,注意,不光是一個api文件,還可以測試怎麼使用呢 這裡慢慢道來,我們一般用的都是maven工程,所以這裡直接上maven依賴: <!-- maven依賴 --> > <swagger.

SpringMVC原理及非註解配置

ges 控制器 sof 靈活 size 實現 query -c requests 1. Spring介紹   Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡單

SpringMVC 框架系列之組件概述與配置

align 概述 handle ont htm 配置文件 掃描器 springmvc 解析 在上一篇文章 SpringMVC 框架系列之初識與入門實例 的實例中,我們已經知道,SpringMVC 框架是一個 web 層的框架,本篇文章就詳細解釋一下 SpringMVC 框架

【SpringBoot學習之路】12.SpringMVC自動配置

轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾【SpringBoot學習之路】12.SpringMVC自動配置詳解  SpringMVC自動配置 Spring MVC auto-configuration Sprin

04 - springMVC三大元件配置

springMVC三大元件配置 概述 1. springMVC預設載入元件 2.配置檔案解讀 3.配置檢視解析器 概述 上篇分析了springMVC的架構流程,這篇對三大元件的配

Swagger2配置

Swagger2.9.2 pom.xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactI

JavaWeb配置(結合框架SpringMVC)

詳解 先說一說常識性的東西,我們的JavaWeb程式執行一開始走的是web.xml檔案,這是我們的核心檔案,可以說沒有web.xml檔案我們就無法執行專案,這個檔案長什麼樣子,讀者自己新建一個web專案就行了。 web.xml <displa

Springmvc中web.xml的配置

 <!-- springMVC核心配置 --> <servlet>  <servlet-name>dispatcherServlet</servlet-name>  <servlet-class>org.springframework.web.ser

springmvc+mybatis+ehcache配置

第一次在springmvc+mybatis 專案上整合ehcache,簡單記錄一下配置和遇到問題。 首先需要新增jar, maven專案直接貼配置了: <dependency> &

setting.xml 配置

校驗 找不到 順序 裁剪 全局 -- mls leg 觸發 文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用戶配置: ${user.home}/.m2/settings.xml note:用戶配置優先於全局配置。${user.home}

【Spring】Spring MVC原理及配置

進行 return sub sca scrip uil 線程安全 松耦合 必須 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡

kafka參數配置

kafka 參數 broker.idbroker的唯一標識符,如果不配置則自動生成,建議配置且一定要保證集群中必須唯一,默認-1log.dir日誌數據存放的目錄,默認/tmp/kafka-logslog.dirs日誌數據存放的目錄,如果沒有配置則使用log.dir,建議此項配置。zookeeper.c

Lnux系統網卡綁定配置

ole osd 接口 當前 onf prim multi pac lin 一、CentOS 配置網卡綁定(bonding) 1、bonding概述 (1)作用:就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可

Nginx配置

set 文件結構 時也 解決方案 ces 反向代理服務器 use 力量 第三方模塊 最近在搞nginx和tomcat 以及apache的集群。下面是參考的一片很不錯的關於nginx配置的詳細講解: http://www.cnblogs.com/knowledgesea/p/

Apache配置

搜索 相對 第一個 form 執行權限 php 時有 多個 direct Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。 主站點的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/softwa

緩存varnish的管理及配置

啟動 一個 hint 單位 quad spec int rom try 一 工作原理 在當前主流的Web服務架構體系中,Cache擔任著越來越重要的作用。常見的基於瀏覽器的C/S架構,Web Cache更是節約服務器資源的關鍵。而最近幾年由FreeBSD創始人之一Kamp開

日誌配置

lin XML html表格 記錄 文件中 對齊方式 oca read val #①配置根Logger,其語法為: # #log4j.rootLogger = [level],appenderName,appenderName2,... #level是日誌記錄的優先級,分為

phpmyadmin配置

php phpmyadmin配置文件中的一個,路徑為libraries/config.default.php,可以修改若幹配置,其中,only_db可以配置在web端顯示的數據庫本文出自 “12968673” 博客,請務必保留此出處http://12978673.blog.51cto.com/1296867

DNS配置 bind實現正向解析和反向解析

cell 8.4 -s intern 資源記錄 ted borde linux系統 ans DNS是域名服務(Domain Name Service),負責把域名解析成IP地址(正向解析)或者把IP地址解析為域名(反向解析)。 DNS查詢過程: 假設我們要訪問www.a

MySQL5.6 數據庫主從(Master/Slave)同步安裝與配置

inux bind 主從配置 希望 master 強調 數據庫主從 ria 配置文件 目錄(?)[+] 安裝環境 操作系統 :CentOS 6.5 數據庫版本:MySQL 5.6.27 主機A:192.168.1.1 (Master) 主機B:192.168.