swagger詳解

1快速環境搭建

pom.xml文件中添加如下內容(看清楚再復制,此處不是全部內容)

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

在config目錄中新建swagger的配置文件swaggerConfig.java

 1 @EnableSwagger2
 2 @Configuration
 3 public class SwaggerConfig {
 4 
 5     @Bean
 6     public Docket createRestApi() {
 7         return new Docket(DocumentationType.SWAGGER_2)
 8                 .apiInfo(apiInfo())
 9                 .select()
10                 .apis(RequestHandlerSelectors.basePackage("com"))//掃描com路徑下的api文檔
11                 .paths(PathSelectors.any())//路徑判斷
12                 .build();
13     }
14 
15     private ApiInfo apiInfo() {
16         return new ApiInfoBuilder()
17                 .title("《----我是title-----》")//標題
18                 .description("《-----我是描述----》:http://www.google.com.hk")//描述
19                 .termsOfServiceUrl("http://www.google.com.hk")//(不可見)條款地址
20                 .contact(new Contact("zz","google.com.hk","123@qq.com"))//作者信息
21                 .version("6.6.6")//版本號
22                 .build();
23     }
24 
25 }

新建實體類User,基本字段如下

 1 @ApiModel(value = "User得實體,----》",reference = "我是參考")
 2 public class User {
 3 
 4     @ApiParam(value = "姓名--------------",required = true)
 5     private String name;
 6     //在swagger-ui.html#頁面中如果返回User,ModelModel Schema選項卡可見
 7     @ApiModelProperty(value = "id",dataType = "String")
 8     private String id;
 9      //在http://localhost:8080/v2/api-docs最后一行的實體可見
10     @ApiModelProperty(value = "年齡----------",required = true)
11     private Integer age;
12 
13     ...此處省略set和get方法
14 }

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

 1 @Api(value = "API - VehiclesController", description = "用戶接口詳情")
 2 @RestController
 3 @RequestMapping("/test")
 4 public class TestController {
 5 
 6     static Map<String, User> users = Collections.synchronizedMap(new HashMap<String,User>());
 7 
 8 
 9     @ApiOperation(value="獲取用戶列表", notes="")
10     @ApiResponses(value = {
11             @ApiResponse(code = 200, message = "Successful — 請求已完成"),
12             @ApiResponse(code = 400, message = "請求中有語法問題,或不能滿足請求"),
13             @ApiResponse(code = 401, message = "未授權客戶機訪問數據"),
14             @ApiResponse(code = 404, message = "服務器找不到給定的資源;文檔不存在"),
15             @ApiResponse(code = 500, message = "服務器不能完成請求")}
16     )
17     @RequestMapping(value={""}, method= RequestMethod.GET)
18     public List<User> getUserList() {
19         List<User> r = new ArrayList<User>(users.values());
20         return r;
21     }
22 
23     ....此處省略n行代碼
24 }

瀏覽改地址,訪問主頁面:http://localhost:8080/swagger-ui.html#?
瀏覽改地址,訪問sagger專有jsonAPI:?http://localhost:8080/v2/api-docs

2常用注釋描述

3全部注釋列表

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

@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

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

5,注意事項:

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

6參考文檔

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

https://gumutianqi1.gitbooks.io/specification-doc/content/tools-doc/spring-boot-swagger2-guide.html

http://www.jianshu.com/p/12f4394462d5

http://blog.didispace.com/springbootswagger2/

https://dzone.com/articles/spring-boot-restful-api-documentation-with-swagger

http://www.jianshu.com/p/b0b19368e4a8

?

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

轉載于:https://www.cnblogs.com/walblog/articles/9395125.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451836.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

13--長度最小的子數組

文章目錄1.題目要求2.解題代碼1.題目要求 給定一個含有 n 個正整數的數組和一個正整數 s &#xff0c;找出該數組中滿足其和 ≥ s 的長度最小的連續子數組&#xff0c;并返回其長度。如果不存在符合條件的連續子數組&#xff0c;返回 0。 示例&#xff1a; 輸入&#xff1a;…

HttpServletRequest 常用方法講解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Web服務器收到一個http請求&#xff0c;會針對每個請求創建一個HttpServletRequest和HttpServletResponse對象&#xff0c; 從客戶端取…

object中的toString方法

任何一個類都是從Object類繼承下來的&#xff0c;因此在任何一個類里面都可以重寫這個toString()方法。toString()方法的作用是當一個引用對象和字符串作連接的時候&#xff0c;或者是直接打印這個引用對象的時侯&#xff0c;這個引用對象都會自動調用toString()方法&#xff0…

東網科技榮膺2016中國大數據最佳實踐獎

11月24日&#xff0c;由中國軟件網主辦的數據趴活動圓滿落幕&#xff0c;活動現場隆重揭曉了大數據領域的重磅榜單&#xff0c;旨在對大數據領域中表現突出的企業、人物進行表彰。東網科技有限公司(以下簡稱“東網科技”)憑借大數據運營支撐平臺及在環保、煙草、教育、政府等行…

Apache Subversion 1.7.2發布,開源版本控制工具

SVN&#xff08;Subversion&#xff09;已經發布了1.7的第二個維護版本。 Apache Subversion是一個開放源碼、多用戶的版本控制系統&#xff0c;支持非 ASCII 文本和二進制數據&#xff0c;支持可在本地訪問或通過網絡訪問的數據庫和文件系統存儲庫。相對于傳統的RCS、CVS&…

react生命周期

1、初始化getDefaultProps()設置默認的props&#xff0c;也可以用dufaultProps設置組件的默認屬性。 getInitialState()在使用es6的class語法時是沒有這個鉤子函數的&#xff0c;可以直接在constructor中定義this.state。此時可以訪問this.propscomponentWillMount()在組件初始…

14--用兩個棧實現隊列

文章目錄1.題目詳情2.解題代碼1.題目詳情 用兩個棧實現一個隊列。隊列的聲明如下&#xff0c;請實現它的兩個函數 appendTail 和 deleteHead &#xff0c;分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。(若隊列中沒有元素&#xff0c;deleteHead 操作返回 -1 ) 示例…

淺談爬蟲 《一》 ===python

淺談爬蟲 《一》 python ‘’正文之前先啰嗦一下&#xff0c;準確來說&#xff0c;在下還只是一個剛入門IT世界的菜鳥&#xff0c;工作近兩年了&#xff0c;之前做前端的時候就想寫博客來著&#xff0c;現在都轉做python了&#xff0c;如果還不開始寫點什么&#xff0c;估計時間…

Servlet全面講解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。Servlet&#xff08;Server Applet&#xff09;&#xff0c;全稱Java Servlet。是用Java編寫的服務器端程序。Servlet 是在服務器上運行的…

你的代碼可以是優雅的,但是還有更重要的

引用軟件設計有兩種方法&#xff1a;一種是盡可能地簡單&#xff0c;這種設計明顯沒有什么缺陷&#xff1b;另一種是盡可能地復雜&#xff0c;這種設計沒有明顯的缺陷。 ——C.A.R. Hoare&#xff0c;1980年圖靈獎講座在開發過程中&#xff0c;我的口頭禪是&#xff1a; Your c…

15--0~n-1中缺失的數字

文章目錄1. 問題描述2. 解題代碼1. 問題描述 一個長度為n-1的遞增排序數組中的所有數字都是唯一的&#xff0c;并且每個數字都在范圍0&#xff5e;n-1之內。在范圍0&#xff5e;n-1內的n個數字中有且只有一個數字不在該數組中&#xff0c;請找出這個數字。 示例 1: 輸入: [0,…

如何在README中使用圖片

將圖片放在倉庫里面&#xff0c;在文件里鏈接它&#xff0c;最后 push 到 github 上。 github 圖片鏈接格式&#xff1a; (http://github.com/yourname/your-repository/raw/master/images-folder/xxx.png) 要自己設定的&#xff1a;yourname, your-repository, your-folder…

Unity中傳入任意數,轉換成分,秒,并進行倒計時換算..(兩種方式)

第一種方式是利用Unity中的協程,代碼如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class DemoTest : MonoBehaviour {public Text text;//測試用的數字public int MyTime 60;void Start (){//開啟協程…

內核編程小結(引用)

https://www.cnblogs.com/fanling999/p/4509785.html轉載于:https://www.cnblogs.com/endenvor/p/9006507.html

JIRA 5.0.1 發布

Atlassian公司發布了JIRA 5.0.1版本&#xff0c;該版本相比JIRA 5.0有更多改進功能。1. 管理界面的改進 將更多頁面管理轉為對話框形式。例如點擊頁面右上方的“Add New”就可實現新增issue types、sub-tasks、field configurations 、screens。2. 性能改進 解決了基于Lucene 3…

java開啟新線程的三種方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 方式1&#xff1a;繼承Thread類 步驟: 1):定義一個類A繼承于Java.lang.Thread類. 2):在A類中覆蓋Thread類中的run方法. 3):我們在ru…

16 --刪除排序數組中的重復項

文章目錄1.問題描述2.代碼實現1.問題描述 給定一個排序數組&#xff0c;你需要在 原地 刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的…

jquery評分效果Rating精華版

參考&#xff1a;https://blog.csdn.net/bluceyoung/article/details/8573629轉載于:https://www.cnblogs.com/yingyigongzi/p/9400489.html

NVIDIA助力SiemensPLMSoftware“工業4.0創新實驗室”,攜手推進中國制造創新之路

今日&#xff0c;NVIDIA宣布為SiemensPLMSoftware在北京建成的“工業4.0創新實驗室”提供了支持。該實驗室配備SiemensPLMSoftware全面的產品生命周期管理解決方案&#xff0c;結合第三方硬件&#xff0c;向中國制造企業展示“數字化企業”的全景圖。實驗室的工作站全部配備NVI…

java中的native方法

一. 什么是Native Method簡單地講&#xff0c;一個Native Method就是一個java調用非java代碼的接口。一個Native Method是這樣一個java的方法&#xff1a;該方法的實現由非java語言實現&#xff0c;比如C。這個特征并非java所特有&#xff0c;很多其它的編程語言都有這一機制&a…