2016-06-29 4 views
0

私はSwaggerの助けを借りてAPIの最初のアプリケーションを実装しています。返されるべき最も重要な目的の1つは、例えば、フレキシブルな名前の属性のコレクションを返しDICOMオブジェクト、次のとおりです。固定プロパティーリストのないオブジェクトのSwagger Yamlスキーマ定義

{ 
    "00080005": {"vr":"CS","Value":["ISO_IR 100"]}, 
    "00080020": {"vr":"DA","Value":["20160602"]}, 
    "00080030": {"vr":"TM","Value":["171855.7490"]}, 
    "00080050": {"vr":"SH","Value":["1234"]}, 
    "00080090": {"vr":"PN","Value":[{"Alphabetic":"Parikh MD^Anush^M"}]} 
} 

だから私は、事前にすべての属性の名前(00080005、00080030を知ることができません、など)ファイル構造は非常に均一ですが。

私の具体的な質問は、そのようなJSONドキュメントのスキーマ定義は何でしょうか。

私は成功せず、次のことを試してみました:

definitions: 
    DicomMetadataJson: 
    type: object 
    patternProperties: 
     ^\d{8}: 
     type: object  

しかし闊歩エディタのようなエラーを返します:

コード: "OBJECT_ADDITIONAL_PROPERTIES"

メッセージ:「追加のプロパティが許可されていません:patternProperties "

説明" JSONスキーマの確定的なバージョンオブジェクト。

+0

私はSwagger仕様で次の内容を読みましたが、その例はありません。*スキーマは2種類のフィールドを公開しています。宣言された名前を持つ固定フィールドと、フィールド名のための正規表現パターンを宣言するパターンフィールド。 * – Jaime

答えて

2

OpenAPI(fag。Swagger)は、残念ながらpatternPropertiesを提案しないJSON Schema v4のサブセットのみを使用します。

しかし、提供された例を与えられた地図で、あなたはadditionalPropertiesを使用して、それを記述することができます。

swagger: "2.0" 
info: 
    version: 1.0.0 
    title: Hashmap 

paths: {} 

definitions: 
    DicomMetadataJson: 
    additionalProperties: 
     properties: 
     vr: 
      type: string 
     Value: 
      type: array 
      items: 
      type: string 

キーが定義されていないと(したがって、あなたはそれが形式です強制することはできません)文字列であることを想定しています。 now.The問題はあなたが同じタイプの(下の例ではデフォルト)以外の必要なプロパティを定義し、このトリックを使用することができます。一方で、ここでhttps://github.com/swagger-api/swagger-ui/issues/1248

追跡されるためSwaggerUI闊歩UIがそれらをレンダリングしていないことを

注意マップのオブジェクトの説明の中にいくつかのヒントを与える:

swagger: "2.0" 
info: 
    version: 1.0.0 
    title: Hashmap 

paths: {} 

definitions: 
    MetaData: 
    properties: 
     vr: 
     type: string 
     Value: 
     type: array 
     items: 
      type: string 

    DicomMetadataJson: 
    description: 'A <string,MetaData> map, default key is only for documentation purpose' 
    properties: 
     default: 
     $ref: '#/definitions/MetaData' 
    additionalProperties: 
     $ref: '#/definitions/MetaData' 

スキーマは2つのタイプのフィールドを公開引用に関する。宣言された名前を持つ固定フィールドと、フィールド名のための正規表現パターンを宣言するパターンフィールド。パターン化されたフィールドは、それぞれ固有の名前を持つ限り、複数の出現を持つことができます。であり、OpenAPI仕様自体で記述されているAPIで使用されているオブジェクトではなく、OpenAPI仕様自体の形式に関係しています。

+0

RAMLのような他のAPI言語がパターンをサポートし、非常に簡潔な方法であるため、パターンフィールドは複数の出現を持つ可能性があります。 – Jaime

関連する問題