2017-01-05 44 views
1

私は現在Swaggerを使って文書を作成する方法を学んでいます。私の会社は今後のプロジェクトの標準的な方法として評価しているからです。Swagger 2.0とYAMLを使用してオブジェクトの内部に配列を配置

私は、YAMLを使用するのはJSONを使用するよりも読みやすく、YAMLはJSONのサブセットであるため、問題なく使用できると考えました。

私は200コードの応答に取り組んでいます

は、私は次の構造に似た何かを表現したいと思います:基本的に

responses: 
    200: 
     description: OK. 
     schema: 
     title: response 
     type: object 
     items: 
      properties: 
      title: user 
      type: array 
      items: 
       id: 
        type: string 
       name: 
        type: string 
      status: 
       type: integer 

私は2つの変数が含まれている「レスポンス」と呼ばれるオブジェクトを返します。複数の文字列(わかりやすくするために2つしか含まれていません)と整数を含む "status"という別の変数( "user"配列の外側)を含む "user"という名前の配列です。

上記のコードは機能せず、エディタは "有効な応答定義"ではないことを通知します。

私はこれにどのように取り組むべきか分かりません。私が間違っていることについて、助けていただければ幸いです。 「ユーザーの外で(複数の文字列が含まれている「利用者」と呼ばれる配列(私はちょうど2つの明瞭にするために含まれています)と別の変数:基本的に

答えて

1

私は、2つの変数が含まれている「レスポンス」と呼ばれるオブジェクトを返します"配列")を返します。

説明に基づいて、レスポンスは次のようになっています(レスポンスがJSONの場合)。基本的には、ネストされたオブジェクトを持つオブジェクトを持っている:

{ 
    "user": { 
    "id": "12345", 
    "name": "Alice" 
    }, 
    "status": 0 
} 

次のようにこの応答を定義することができます便宜上

 responses: 
     200: 
      description: OK. 
      schema: 
      title: response 
      type: object 
      required: [user, status] 
      properties: 
       user: 
       type: object 
       required: [id, name] 
       properties: 
        id: 
        type: string 
        name: 
        type: string 
       status: 
       type: integer 

、ネストされたオブジェクトとの複雑なスキーマは、個々のオブジェクト・スキーマに分けることができます。スキーマは、グローバルdefinitionsセクションに書かれ、$refによって他の場所から参照されることができます。このように、たとえば、同じスキーマを複数の操作/応答で再利用することができます。

 responses: 
     200: 
      description: OK. 
      schema: 
      $ref: "#/definitions/ResponseModel" 

definitions: 
    ResponseModel: 
    title: response 
    type: object 
    properties: 
     user: 
     $ref: "#/definitions/User" 
     status: 
     type: integer 
    required: 
     - user 
     - status 

    User: 
    type: object 
    properties: 
     id: 
     type: string 
     name: 
     type: string 
    required: 
     - id 
     - name 
+0

ありがとうございました!あなたが提案した方法で試しましたが、有効なresponse_エラーではありません。私が理解できないことは、文字列配列の中にキーと値のペアをどのように定義するのでしょうか?私は 'items:{nameofkey}:type:string'を使用していましたが、まだインデントエラーが発生しました。 –

+0

@RolaTarola:1)あなたのインデントが正しいことと' respond'セクションがあなたの操作定義の下に正しくインデントされていることを確認してください。 – Helen

+0

2) 'users'は連想配列/辞書ですが、通常の文字列配列ではありませんか?任意の固定/必須キーを持っているか、すべてのキーは任意ですか? – Helen

関連する問題