1. 程式人生 > >swagger_php註釋詳解

swagger_php註釋詳解

六、註釋:

一、SWG物件描述: @SWG\Swagger  宣告一個SWG全域性物件

固定欄位

欄位名稱

型別

描述

swagger

string

需要。指定正在使用的Swagger規範版本。它可以被Swagger UI和其他客戶端用來解釋API列表。該值必須是"2.0"

Info

資訊物件

需要。提供關於API的元資料。元資料可以由客戶端使用,如果需要的話。

host

string

提供API的主機(名稱或IP)。這隻能是主機,不包括方案和子路徑。它可能包括一個埠。如果host不包括,將使用提供文件的主機(包括埠)。在host不支援路徑模板

bashpath

string

API所服務的基本路徑,相對於host。如果沒有包含,則直接在API下提供API host。該值必須以一個前導斜槓(/)開始。在basePath不支援路徑模板

schemes

string

API的傳輸協議。值必須是從列表:"http""https""ws""wss"。如果schemes不包含,則使用的預設方案是用於訪問規範的方案。

consumes

string

API可以使用的MIME型別列表。這對所有的API都是全域性的,但是可以在特定的API呼叫上被覆蓋。值必須如MIME型別下所述。

produces

string

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

string

需要。API的標題。

description

string

API的簡短說明。

termsOfService

string

API的服務條款。

contact

聯絡物件

暴露的API的聯絡資訊。

license

許可證物件

暴露的API的許可證資訊。

version

string

必需提供應用程式API的版本(不要被規格版本混淆)。

三、請求操作物件描述: @SWG\Get/Post/Put/Delete 宣告一個介面請求資訊

描述路徑上的單個API操作。

固定欄位

欄位名稱

型別

描述

tags

string

介面名

summary

string

介面的簡短摘要。為了在swagger-ui中獲得最大的可讀性,這個欄位應該少於120個字元。

description

string

介面的詳細解釋。

externalDocs

有關此操作的其他外部文件。

operationId

string

操作的友好名稱。id必須在API中描述的所有操作中唯一。工具和庫可以使用操作ID來唯一標識一個操作。

consumes

string

該操作可以使用的型別列表。這將覆蓋consumesSwagger物件的定義。可以使用空值清除全域性定義。值必須如MIME型別下所述。

produces

string

操作可以產生的型別列表。這將覆蓋producesSwagger物件的定義。可以使用空值清除全域性定義。值必須如MIME型別下所述。

parameters

引數物件

適用於此操作的引數列表。如果在路徑專案中已經定義了一個引數,新的定義將覆蓋它,但是不能刪除它。該列表不得包含重複的引數。一個獨特的引數是由一個名稱位置的組合來定義的。該列表可以使用引用物件連結到在Swagger物件引數中定義的引數。最多可以有一個“身體”引數。

responses

響應物件

需要。執行此操作時返回的可能響應列表。

schemes

string

操作的傳輸協議。值必須是從列表:"http""https""ws""wss"。該值將覆蓋Swagger物件schemes定義。

deprecated

boolean

宣告此操作將被棄用。宣佈的操作的使用應該被禁止。預設值是false

security

宣佈哪些安全計劃適用於此操作。值列表描述了可以使用的替代安全方案(也就是說,安全需求之間存在邏輯或)。該定義覆蓋任何已宣告的頂層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

string

需要。引數的名稱。引數名稱區分大小寫

in

string

需要。引數的位置。可能的值是“query”,“header”,“path”,“formData”或“body”。

description

string

引數的簡要說明。這可能包含使用的例子。

type

string

引數的型別。取值許可權:“string”,“number”,“integer”,“bollean”,“array”,“file”。

required

boolean

確定此引數是否是必需的。其預設值是false

defult

*

預設值。

五、響應物件描述: @SWG\Response  描述來自API操作的單個響應

固定欄位

欄位名稱

型別

描述

description

string

需要。響應的簡短描述。

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

string

新增對多型的支援。鑑別符是用於區分繼承此模式的其他模式的模式屬性名稱。使用的屬性名必須在這個模式中定義,並且必須在required屬性列表中。使用時,值必須是該模式的名稱或任何繼承它的模式。

readOnly

boolean

僅與架構"properties"定義相關。宣告該屬性為“只讀”。這意味著它可以作為響應的一部分發送,但不能作為請求的一部分發送。標記為屬性readOnly的存在true不應該在該required定義的架構列表。預設值是false

XML

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;

}