swagger_php註釋詳解
六、註釋:
一、SWG物件描述: @SWG\Swagger 宣告一個SWG全域性物件
固定欄位
欄位名稱 |
型別 |
描述 |
swagger |
|
需要。指定正在使用的Swagger規範版本。它可以被Swagger UI和其他客戶端用來解釋API列表。該值必須是 |
Info |
需要。提供關於API的元資料。元資料可以由客戶端使用,如果需要的話。 |
|
host |
|
提供API的主機(名稱或IP)。這隻能是主機,不包括方案和子路徑。它可能包括一個埠。如果 |
bashpath |
|
API所服務的基本路徑,相對於 |
schemes |
|
API的傳輸協議。值必須是從列表: |
consumes |
|
API可以使用的MIME型別列表。這對所有的API都是全域性的,但是可以在特定的API呼叫上被覆蓋。值必須如MIME型別下所述。 |
produces |
|
API可以生成的MIME型別列表。這對所有的API都是全域性的,但是可以在特定的API呼叫上被覆蓋。值必須如MIME型別下所述。 |
paths |
需要。API的可用路徑和操作。 |
|
definitions |
一個物件,用於儲存操作生成和使用的資料型別。 |
|
parameters |
儲存可在各個操作中使用的引數的物件。該屬性沒有為所有操作定義全域性引數。 |
|
responses |
儲存可用於各個操作的響應的物件。這個屬性沒有定義全域性響應的所有操作。 |
|
securityDefinitions |
安全定義物件 |
可以在規範中使用的安全方案定義。 |
security |
宣佈哪些安全計劃適用於整個API。值的列表描述了可以使用的替代安全方案(也就是說,安全需求之間存在邏輯或)。單獨的操作可以覆蓋這個定義。 |
|
tags |
規範使用附加元資料的標籤列表。標籤的順序可以用來反映他們的解析工具的順序。操作物件所使用的標籤並非都必須宣告。未宣告的標籤可以隨機組織或基於工具的邏輯組織。列表中的每個標籤名必須是唯一的。 |
|
externalDocs |
額外的外部檔案。 |
例:
<?php
/**
* @SWG\Swagger(
* schemes={"http"},
* host="api.my_project.com",
* consumes={"multipart/form-data"},
* produces={"application/json"},
* @SWG\Info(
* version="2.3",
* title="my project doc",
* description="my project 介面文件, V2-3.<br>
以後大家就在這裡愉快的對介面把!<br>
以後大家就在這裡愉快的對介面把!<br>
以後大家就在這裡愉快的對介面把!<br>
"
* ),
*
* @SWG\Tag(
* name="User",
* description="使用者操作",
* ),
*
* @SWG\Tag(
* name="MainPage",
* description="首頁模組",
* ),
*
* @SWG\Tag(
* name="News",
* description="新聞資訊",
* ),
*
* @SWG\Tag(
* name="Misc",
* description="其他介面",
* ),
* )
*/
二、資訊物件描述: @SWG\Info 宣告一個API版本資訊
欄位名稱 |
型別 |
描述 |
title |
|
需要。API的標題。 |
description |
|
API的簡短說明。 |
termsOfService |
|
API的服務條款。 |
contact |
暴露的API的聯絡資訊。 |
|
license |
暴露的API的許可證資訊。 |
|
version |
|
必需提供應用程式API的版本(不要被規格版本混淆)。 |
三、請求操作物件描述: @SWG\Get/Post/Put/Delete 宣告一個介面請求資訊
描述路徑上的單個API操作。
固定欄位
欄位名稱 |
型別 |
描述 |
tags |
|
介面名 |
summary |
|
介面的簡短摘要。為了在swagger-ui中獲得最大的可讀性,這個欄位應該少於120個字元。 |
description |
|
介面的詳細解釋。 |
externalDocs |
有關此操作的其他外部文件。 |
|
operationId |
|
操作的友好名稱。id必須在API中描述的所有操作中唯一。工具和庫可以使用操作ID來唯一標識一個操作。 |
consumes |
|
該操作可以使用的型別列表。這將覆蓋 |
produces |
|
操作可以產生的型別列表。這將覆蓋 |
parameters |
適用於此操作的引數列表。如果在路徑專案中已經定義了一個引數,新的定義將覆蓋它,但是不能刪除它。該列表不得包含重複的引數。一個獨特的引數是由一個名稱和位置的組合來定義的。該列表可以使用引用物件連結到在Swagger物件引數中定義的引數。最多可以有一個“身體”引數。 |
|
responses |
需要。執行此操作時返回的可能響應列表。 |
|
schemes |
|
操作的傳輸協議。值必須是從列表: |
deprecated |
|
宣告此操作將被棄用。宣佈的操作的使用應該被禁止。預設值是 |
security |
宣佈哪些安全計劃適用於此操作。值列表描述了可以使用的替代安全方案(也就是說,安全需求之間存在邏輯或)。該定義覆蓋任何已宣告的頂層 |
|
path |
URl |
介面請求的路由 |
例:
/**
*@SWG\Post(path="/user/login", tags={"User"},
* summary="登入介面(使用者名稱+密碼)",
* description="使用者登入介面,賬號可為 使用者名稱 或 手機號. 參考(這個會在頁面產生一個可跳轉的連結: [使用者登入注意事項](http://blog.csdn.net/liuxu0703/)",
* @SWG\Parameter(name="userName",type="string", required=true, in="formData",
* description="登入使用者名稱/手機號"
* ),
* @SWG\Parameter(name="password",type="string", required=true, in="formData",
* description="登入密碼"
* ),
* @SWG\Parameter(name="image_list",type="string", required=true, in="formData",
* @SWG\Schema(type="array",@SWG\Items(ref="#/definitions/Image")),
* description="使用者相簿. 好吧,沒人會在登入時要求填一堆圖片資訊.這裡是為了示例 帶結構的資料, @SWG\Schema ,這個結構需要另行定義,下面會講."
* ),
* @SWG\Parameter(name="video",type="string", required=true, in="formData",
* @SWG\Schema(ref="#/definitions/Video"),
* description="使用者 呃... 視訊? 同上,為了示例 @SWG\Schema ."
* ),
* @SWG\Parameter(name="client_type",type="integer", required=false, in="formData",
* description="呼叫此介面的客戶端型別: 1-Android, 2-IOS. 非必填,所以 required 寫了false"
* ),
* @SWG\Parameter(name="gender",type="integer", required=false, in="formData",
* default="1",
* description="性別: 1-男; 2-女. 注意這個引數的default上寫的不是引數預設值,而是預設會被填寫在swagger頁面上的值,為的是方便用swagger就地訪問該介面."
* ),
* )
*/
public functionloginAction() {
// php code
}
/**
*@SWG\Get(path="/User/myWebPage", tags={"User"},
* produces={"text/html"},
* summary="使用者的個人網頁",
* description="這不是個api介面,這個返回一個頁面,所以 produces 寫了text/html",
* @SWG\Parameter(name="userId",type="integer", required=true, in="query"),
* @SWG\Parameter(name="userToken",type="string", required=true, in="query",
* description="使用者令牌",
* ),
* )
*/
public functionmyWebPageAction(){
// php code
}
四、引數物件描述: @SWG\Parameter 描述一個單一的操作引數
固定欄位
欄位名稱 |
型別 |
描述 |
name |
|
需要。引數的名稱。引數名稱區分大小寫。 |
in |
|
需要。引數的位置。可能的值是“query”,“header”,“path”,“formData”或“body”。 |
description |
|
引數的簡要說明。這可能包含使用的例子。 |
type |
|
引數的型別。取值許可權:“string”,“number”,“integer”,“bollean”,“array”,“file”。 |
required |
|
確定此引數是否是必需的。其預設值是 |
defult |
|
預設值。 |
五、響應物件描述: @SWG\Response 描述來自API操作的單個響應
固定欄位
欄位名稱 |
型別 |
描述 |
description |
|
需要。響應的簡短描述。 |
schema |
響應結構的定義。它可以是一個基元,一個數組或一個物件。如果此欄位不存在,則表示沒有內容作為響應的一部分返回。 |
|
headers |
與響應一起傳送的標題列表。 |
|
examples |
響應訊息的一個例子。 |
例:
@SWG\Response(response="default", description="操作成功")
七、模式物件描述: @SWG\Schema 允許定義輸入輸出資料型別
常用限制:
- ref
- format
- title
- description
- default
- multipleOf
- maximum
- exclusiveMaximum
- minimum
- exclusiveMinimum
- maxLength
- minLength
- pattern
- maxItems
- minItems
- uniqueItems
- maxProperties
- minProperties
- required
- enum
- type
固定欄位
欄位名稱 |
型別 |
描述 |
discriminator |
|
新增對多型的支援。鑑別符是用於區分繼承此模式的其他模式的模式屬性名稱。使用的屬性名必須在這個模式中定義,並且必須在 |
readOnly |
|
僅與架構 |
XML |
這隻能用於屬性模式。它對根模式沒有影響。新增其他元資料來描述此屬性的XML表示格式。 |
|
externalDocs |
此架構的其他外部文件。 |
|
example |
* |
一個自由格式的屬性,包含這個模式的一個例項的例子 |
例:
<?php
/**
* @SWG\Definition(type="object",@SWG\Xml(name="Image"))
*/
class Image {
/**
* @SWG\Property()
* @var string
*/
public $url;
/**
* @SWG\Property(format="int32")
* @var int
*/
public $height;
/**
* @SWG\Property(format="int32")
* @var int
*/
public $width;
}