18

Node.JSでswaggerドキュメントを作成するための解決策を見つけるのに多くの時間を費やしました. メイン ライブラリは swagger-node で、swagger yaml ファイルを作成し、コントローラを追加します。アプリにswagger uiドキュメントを自動的に提供し、yamlで指定したモデルに対してリクエストとレスポンスの検証を行います。

これはきちんとしていますが、明示的に値として返したり受け入れたりできるようにしたいいくつかのフィールドが必要ですnull。たとえば、次のようになります。

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

キーを削除したくありませんdate_sent。明示的にnullと宣言したいのです。

swagger 仕様はanyOf、JSON スキーマが通常これを行う方法をサポートしていません。

回避策があるかどうか疑問に思っていますか?おそらく、追加できるベンダー固有のフラグを持つノードで利用可能なライブラリx-nullable、または必須ではないフィールドがすべて null 可能であることを指定する方法です。

バリデータミドルウェアが実行される前に、自分のswaggerファイルを取得して変更する何かを自分で作成する必要がありますか、または誰かが提案できる回避策はありますか?

4

4 に答える 4

2

ヒントとして、私はこれに出くわしたので:私が追加したとき

type: string
nullable: true`

回答https://stackoverflow.com/a/42797352/2750563で説明されているように、私のサービスは"fieldName": { "present": true }実際の値の代わりにのみ返されました!

これが表示JsonNullableModuleされた場合は、Jackson シリアライザーに単純に追加します。たとえば、Spring を使用している場合:

@Component
public class JacksonConfiguration {

    @Autowired
    public void configureJackson(ObjectMapper mapper) {
        mapper.registerModule(new JsonNullableModule());
    }

}

その後、すべてが再び正常に見えます。

于 2019-11-26T09:10:53.270 に答える