Swagger的介紹以及常用注解

1、Swagger是什么

? 是一款讓你更好的書寫API文檔的規(guī)范且完整的框架

? 提供描述、生產(chǎn)诊笤、消費和可視化RESTful Web Service

? 是由龐大的工具集合支撐的形式化規(guī)范嫡锌,這個集合涵蓋了從終端用戶接口、底層代碼庫到商業(yè)API管理的方方面面

2檬寂、常用注解

? (1) @Api 用在類上终抽,說明該類的作用,可以標記一個controller類作為swagger文檔資源桶至,使用方式:

? ? ? ????? @Api(value = "/user", description = "Operations about user")

??????????? 常用參數(shù):

? ? ? ??????????????????? tags:"說明該類的作用昼伴,非空時將覆蓋value的值"

? ? ? ? ? ? ? ? ? ? ? ? ? value:"描述類的作用"

? ? ? ? ? ? ? ??????????? description:對api資源的描述,在1.5版本后不再支持

? ? ? ? ? ? ? ??????????? basePath:基本路徑可以不配置镣屹,在1.5版本后不再支持

? ? ? ? ? ? ? ??????????? position:如果配置多個Api 想改變顯示的順序位置圃郊,在1.5版本后不再支持

????????????????????????? produces:設(shè)置MIME類型列表(output),例:"application/json, application/xml"女蜈,默認為空

????????????????????????? consumes:設(shè)置MIME類型列表(input)持舆,例:"application/json, application/xml",默認為空

????????????????????????? protocols:設(shè)置特定協(xié)議伪窖,例:http, https竹伸, ws佩伤, wss。

????????????????????????? authorizations:獲取授權(quán)列表(安全聲明)生巡,如果未設(shè)置孤荣,則返回一個空的授權(quán)值钱豁。

????????????????????????? hidden:默認為false牲尺, 配置為true 將在文檔中隱藏復(fù)制代碼? ? ?

? (2) @ApiOperation 用在方法上谤碳,說明方法的作用蜒简,每一個url資源的定義,使用方式:

? ? ? ????? @ApiOperation(value = "Find purchase order by ID",

? ? ? ? ?????????????????????????????? notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions",

? ? ? ? ?????????????????????????????? response = Order,tags = {"Pet Store"})

??????????? 常用參數(shù):

? ? ? ??????????????????? value:"說明方法的用途卷仑、作用"

? ? ? ? ? ? ? ??????????? notes:"方法的備注說明"

? ? ? ? ? ? ? ? ? ? ? ? ? tags:操作標簽系枪,非空時將覆蓋value的值

? ? ? ? ? ? ? ? ? ? ? ? ? response:響應(yīng)類型(即返回對象)

? ? ? ? ? ? ? ??????????? responseContainer:聲明包裝的響應(yīng)容器(返回對象類型)。有效值為 "List", "Set" or "Map"衬浑。

????????????????????????? responseReference:指定對響應(yīng)類型的引用工秩。將覆蓋任何指定的response()類

????????????????????????? httpMethod:指定HTTP方法助币,"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"

????????????????????????? position:如果配置多個Api 想改變顯示的順序位置,在1.5版本后不再支持

????????????????????????? nickname:第三方工具唯一標識俭缓,默認為空

????????????????????????? produces:設(shè)置MIME類型列表(output)愿吹,例:"application/json, application/xml"犁跪,默認為空

???????????????????????? consumes:設(shè)置MIME類型列表(input),例:"application/json, application/xml",默認為空

???????????????????????? protocols:設(shè)置特定協(xié)議逞刷,例:http, https帆喇, ws, wss婉刀。

???????????????????????? authorizations:獲取授權(quán)列表(安全聲明),如果未設(shè)置律秃,則返回一個空的授權(quán)值。

???????????????????????? hidden:默認為false迁客, 配置為true 將在文檔中隱藏

???????????????????????? responseHeaders:響應(yīng)頭列表

???????????????????????? code:響應(yīng)的HTTP狀態(tài)代碼粘室。默認 200

???????????????????????? extensions:擴展屬性列表數(shù)組

? (3) @ApiParam 請求屬性,使用方式:

? ? ? ??????? public ResponseEntity<User> createUser(@RequestBody @ApiParam(value = "Created user object", required = true)? User user)

? ? ? ????? 常用參數(shù):

? ? ? ??????????????????? name:參數(shù)名稱海雪,參數(shù)名稱可以覆蓋方法參數(shù)名稱锦爵,路徑參數(shù)必須與方法參數(shù)一致

? ? ? ? ? ? ? ??????????? value:參數(shù)的簡要說明险掀。

? ? ? ? ? ? ? ??????????? defaultValue:參數(shù)默認值

? ? ? ? ? ? ? ??????????? required:屬性是否必填,默認為false [路徑參數(shù)必須填]

其他參數(shù):

? ? ? ? ? ? ? ? ? ? ? ? ? allowableValues:限制參數(shù)的可接受值。1.以逗號分隔的列表? 2、范圍值? 3、設(shè)置最小值/最大值

? ? ? ? ? ? ? ??????????? access:允許從API文檔中過濾參數(shù)。

? ? ? ? ? ? ? ??????????? allowMultiple:指定參數(shù)是否可以通過具有多個事件接受多個值,默認為false

? ? ? ? ? ? ? ???????????? hidden:隱藏參數(shù)列表中的參數(shù)。

? ? ? ? ? ? ? ???????????? example:單個示例

? ? ? ? ? ? ? ???????????? examples:參數(shù)示例。僅適用于BodyParameters

? (4) @ApiResponse 響應(yīng)配置市咽,用在 @ApiResponses 中痊银,一般用于表達一個錯誤的響應(yīng)信,使用方式:

? ? ? ????? @ApiResponse(code = 400, message = "Invalid user supplied")

? (5) @ApiResponses 響應(yīng)集配置,用在請求的方法上,表示一組響應(yīng),使用方式:

? ? ? ????? @ApiResponses({ @ApiResponse(code = 400, message = "Invalid Order") })

??????????? 常用參數(shù):

? ? ? ???????????????????? code:數(shù)字致稀,例如400

? ? ? ? ? ? ? ???????????? message:信息冈闭,例如"請求參數(shù)沒填好"

? ? ? ? ? ? ? ? ? ? ? ? ?? response:拋出異常的類

? (6) @ResponseHeader 響應(yīng)頭設(shè)置,使用方式:

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

? (7) @ApiIgnore 用于類或方法上抖单,可以不被swagger顯示在頁面上

? (8) @ApiModel 用在請求的類上萎攒,表示對類的說明;用于響應(yīng)類上矛绘,表示返回一個響應(yīng)數(shù)據(jù)的信息(這種一般用在post創(chuàng)建的時候耍休,使用 @RequestBody這樣的場景,請求參數(shù)無法使用 @ApiImplicitParam注解進行描述的時候)

? ? ? ? ? ? @ApiModelProperty:用在屬性上货矮,描述響應(yīng)類的屬性

? ? ? ? 使用方式:

? ? ? ??????????????? @ApiModel(value="用戶登錄信息", description="用于判斷用戶是否存在")

? ? ? ? ? ? ? ? ? ? ? public class UserModel implements Serializable{

? ? ? ? ? ? ? ? ? ???????????? private static final long serialVersionUID = 1L;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? /**用戶名 */

? ???????????????????????????? @ApiModelProperty(value="用戶名")

? ????????????????????????????? private String account;

? ????????????????????????????? /**密碼 */

? ????????????????????????????? @ApiModelProperty(value="密碼")

? ?????????????????????????????? private String password;

}

? ? ? ? 常用參數(shù):

? ? ? ???????????????? value:此屬性的簡要說明

? ? ? ? ? ? ? ???????? name:允許覆蓋屬性名稱

??????? 其他參數(shù):

? ? ? ???????????????? allowableValues:限制參數(shù)的可接受值羊精。1.以逗號分隔的列表? 2、范圍值? 3囚玫、設(shè)置最小值/最大值

? ? ? ? ? ? ? ? ? ? ?? access:允許從API文檔中過濾屬性园匹。

? ? ? ? ? ? ? ???????? notes:目前尚未使用。

? ? ? ? ? ? ? ???????? dataType:參數(shù)的數(shù)據(jù)類型劫灶。可以是類名或者參數(shù)名掖桦,會覆蓋類的屬性名稱本昏。

? ? ? ? ? ? ? ???????? required:參數(shù)是否必傳,默認為false

? ? ? ? ? ? ? ???????? position:允許在類中對屬性進行排序枪汪。默認為0

? ? ? ? ? ? ? ???????? hidden:允許在Swagger模型定義中隱藏該屬性涌穆。

? ? ? ? ? ? ? ???????? example:屬性的示例。

? ? ? ? ? ? ? ???????? readOnly:將屬性設(shè)定為只讀雀久。

? ? ? ? ? ? ? ???????? reference:指定對相應(yīng)類型定義的引用宿稀,覆蓋指定的任何參數(shù)值

? (9) @ApiImplicitParams 用在請求的方法上,表示一組參數(shù)說明

? ? ? ???? @ApiImplicitParam:用在 @ApiImplicitParams注解中赖捌,指定一個請求參數(shù)的各個方面

使用方式:

? ? ? ? @ResponseBody

??????? @PostMapping(value="/login")

??????? @ApiOperation(value = "登錄檢測", notes="根據(jù)用戶名祝沸、密碼判斷該用戶是否存在")

??????? @ApiImplicitParams({

? ? ??? @ApiImplicitParam(name = "name", value = "用戶名", required = false, paramType = "query", dataType = "String"),

? ? ??? @ApiImplicitParam(name = "pass", value = "密碼", required = false, paramType = "query", dataType = "String")

})

public UserModel login(@RequestParam(value = "name", required = false) String account,

@RequestParam(value = "pass", required = false) String password){}

常用參數(shù):

? ? ? ???????? name:參數(shù)名,參數(shù)名稱可以覆蓋方法參數(shù)名稱越庇,路徑參數(shù)必須與方法參數(shù)一致

?????????????? value:參數(shù)的漢字說明罩锐、解釋

?????????????? required:參數(shù)是否必須傳,默認為false [路徑參數(shù)必填]

?????????????? paramType:參數(shù)放在哪個地方

? ???????????? ·header --> 請求參數(shù)的獲嚷卑Α:@RequestHeader

? ???????????? ·query --> 請求參數(shù)的獲壬蟆:@RequestParam

? ???????????? ·path(用于restful接口)--> 請求參數(shù)的獲取:@PathVariable

? ???????????? ·body(不常用)

? ? ? ? ? ? ?? ·form(不常用)

?????????????? dataType:參數(shù)類型桑驱,默認String竭恬,其它值dataType="Integer"

?????????????? defaultValue:參數(shù)的默認值

? 其他參數(shù):

? ? ? ? ? ? ? ? allowableValues:限制參數(shù)的可接受值跛蛋。1.以逗號分隔的列表? 2、范圍值? 3痊硕、設(shè)置最小值/最大值

??????????????? access:允許從API文檔中過濾參數(shù)赊级。

??????????????? allowMultiple:指定參數(shù)是否可以通過具有多個事件接受多個值,默認為false

??????????????? example:單個示例

??????????????? examples:參數(shù)示例寿桨。僅適用于BodyParameters

3此衅、Swagger的優(yōu)勢

a:支持API自動生成同步的在線文檔:使用swagger后可以直接通過代碼生成文檔,不再需要自己手動編寫接口文檔亭螟,對程序員來說非常方便挡鞍,可以節(jié)約寫文檔的時間去學(xué)習(xí)新的技術(shù)

b:提供web頁面的在線測試API:光有文檔還不夠,Swagger生成的文檔预烙,還支持在線測試墨微。參數(shù)和格式都定好了,直接在界面上輸入?yún)?shù)對應(yīng)的值即可在線測試接口

4扁掸、Swagger的目標

swagger的目標是對REST API定義一個標準的且和語言無關(guān)的接口翘县,可以讓人和計算機擁有無需訪問源碼、文檔或網(wǎng)絡(luò)流量監(jiān)測就可以發(fā)現(xiàn)和理解服務(wù)的能力谴分,當通過swagger進行正確定義锈麸,用戶可以理解遠程服務(wù)并使用最少實現(xiàn)邏輯與遠程服務(wù)進行交互。與底層接口所實現(xiàn)的接口類似牺蹄,Swagger消除了調(diào)用服務(wù)時可能會有的猜測忘伞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沙兰,隨后出現(xiàn)的幾起案子氓奈,更是在濱河造成了極大的恐慌,老刑警劉巖鼎天,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舀奶,死亡現(xiàn)場離奇詭異,居然都是意外死亡斋射,警方通過查閱死者的電腦和手機育勺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罗岖,“玉大人怀大,你說我怎么就攤上這事⊙轿牛” “怎么了化借?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捡多。 經(jīng)常有香客問我蓖康,道長铐炫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任蒜焊,我火速辦了婚禮倒信,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泳梆。我一直安慰自己鳖悠,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布优妙。 她就那樣靜靜地躺著乘综,像睡著了一般。 火紅的嫁衣襯著肌膚如雪套硼。 梳的紋絲不亂的頭發(fā)上卡辰,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音邪意,去河邊找鬼九妈。 笑死,一個胖子當著我的面吹牛雾鬼,可吹牛的內(nèi)容都是我干的萌朱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼策菜,長吁一口氣:“原來是場噩夢啊……” “哼嚷兔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起做入,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎同衣,沒想到半個月后竟块,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡耐齐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年浪秘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埠况。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耸携,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辕翰,到底是詐尸還是另有隱情夺衍,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布喜命,位于F島的核電站沟沙,受9級特大地震影響河劝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矛紫,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一赎瞎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颊咬,春花似錦务甥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杭隙,卻和暖如春哟绊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痰憎。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工票髓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铣耘。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓洽沟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜗细。 傳聞我的和親對象是個殘疾皇子裆操,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353