2016-07-01 3 views
5

Node.JSでスワッガードキュメントを作成するためのソリューションを見つけようと多くの時間を費やしました。メインライブラリはswagger-nodeであり、swagger yamlファイルを作成してコントローラを追加します。それは自動的にあなたのアプリにswigerのuiドキュメントを提供し、あなたのyamlで指定したモデルに対する応答&の要求に対する検証を行います。私はdate_sentを削除したくないnode.js上のswaggerのnullableフィールド

{ 
    id: 123, 
    description: "string", 
    date_sent: null 
} 

これはきちんとしている、しかし、私はいくつかのフィールドは、私は明示的に、たとえば、返したり値としてnullを受け入れることができるようにしたい要件を持っていますキー、私は明示的にヌルとしてそれを述べたいと思います。

swaggerの仕様では、anyOfがサポートされていません。これはJSONスキーマが通常これをどのように実行するかを表しています。

回避策があるのでしょうか?おそらく、追加できるベンダー固有のフラグx-nullableを持つノード用のライブラリがあります。また、不要なフィールドをすべてnullにできるように指定する方法もあります。

バリエーターミドルウェアが実行される前に自分のスワッガーファイルを取り出して修正するか、誰かが提案できる回避策がありますか?

答えて

6

SwaggerUIはnull可能な型をサポートしていません(hereを参照してください)。しかし、null可能なプロパティを次のように使用しました。

type: ['string','null'] 

その後、このプロパティはUIからは消えますが、検証は引き続き機能します。

+2

aha!私はこれを試しましたが、yamlでは 'string'と' null'を実行しました しかし、それを動作させるには 'null''を引用符で囲む必要があります。ありがとう! また、 'default'を追加すると、例の値に再び表示されますが、どちらの例を使用するのかわかりません。 – RodH257

+0

うわー!本当にありがとう!私はデフォルト値については考えなかった。私は私のプロジェクトのためにそれを試してみる – Sergiy

+2

これは、有効なSwaggerタイプの定義ではありません。 – Ron

4

nullableフィールドはOpenAPI(fka Swagger)仕様v3.0.0でサポートされていますが、v2.0ではサポートされていません。ヌル可能型は、次のように定義されます。

# Can be string or null 
type: string 
nullable: true 
0

typeプロパティにnullを追加する代わりに、代わりにdefaultプロパティを使用できます。

Swagger.jsonプロパティ定義の例:

"due_date": { 
    "type": "string", 
    "description": "Due date", 
    "default": "null" 
}, 

それが有効な闊歩型定義だし、まだ闊歩UIで期待どおりに表示されます。

関連する問題