2017-12-01 17 views
0

php LaravelでAPIを記述し、swagger.jsonを生成するためにswagger(2.0)アノテーション(lib:darkaonline/l5-swaggerswagger-phpを使用)を使用します。私が闊歩次き:APIの上@SWG Responseで使用されるモデルからいくつかの(ネストされた)プロパティを除外する方法

@SWG\Definition(
    definition="Space", 
    @SWG\Property(property="id", type="integer", example=33), 
    @SWG\Property(property="name", type="string"), 
    @SWG\Property(property="dataA", type="string", example="very long data string"), 
    @SWG\Property(property="dataB", type="string", example="very long data string"), 
), 

@SWG\Get(
    path="/api/v1/client/space/list", 
    @SWG\Response(response=200, description="OK", 
     @SWG\Schema(
       type="array", 
       @SWG\Items(ref="#/definitions/Space"), 
     ) 
    ) 
) 

スペースのリストを返します(表に表示する)が、私は唯一のIDを取得する必要がある必要があります - スペースしかしをも非常に重いのフィールドを持っていますdataAおよびdataB - これはテーブルでは不要です。 スペースレスポンスの定義(「自分自身を繰り返さないでください」ルール)を壊すのを避けるために、これらのフィールドを除外する方法はありますか?

@SWG\Items(ref="#/definitions/Space", exclude={"dataA","dataB"}), 

および/または

exclude={"dataA.securityField","dataA.someList[].heavyField"} 

のようなより多くのネストされたフィールドを除外:このような何かを行うには、いくつかのメカニズムがありますか?

PS:これは質問/問題hereとしても報告します。

答えて

1

現在、除外(look here)などの機能の実装は存在しません。あなたは(あなたがスペース定義の新しい定義が、この定義の再利用部品を作成する)部分的に許容可能なアプローチを以下試すことができますしかし:

@SWG\Definition(
    definition="SpaceListEntry", 
    @SWG\Property(property="id", ref="#/definitions/Space/properties/id"), 
    @SWG\Property(property="name", ref="#/definitions/Space/properties/name"), 
) 

そして@SWG\Get変化@SWG\Items(ref="#/definitions/Space"),このソリューションは、部分的に満足して

@SWG\Items(ref="#/definitions/SpaceListEntry"), 

スペースの完全なコピーよりも良いです。

関連する問題