1

API の設計に swagger-inflector を使用しています。ドキュメントで指定されているように x-swagger-router-controller と x-swagger-router-model を使用しようとしていますが、指定どおりに機能しません。

私がドキュメントを読んだ方法では、これらのベンダー拡張機能は、存在しない場合はクラスを作成し、「operationId」という名前のメソッドを作成することになっています。ただし、指定どおりに動作しません。(このベンダー拡張機能を処理すると思われるコードを見たところ、拡張機能を処理する必要があるように見えますが、期待どおりにクラスが作成されていません。x-swagger-router-model は目的のクラスを生成します。名前ですが、目的のパッケージではありません)。

inflector.yaml ファイルを使用して modelPackage と controllerPackage を指定すると、これらのパッケージにクラスが作成されますが、生成されたクラスに使用されるパッケージをより細かく制御する必要があります。私は何か間違ったことをしていますか、それともこれは壊れていますか?

次に例を示します。

definitions:
  SomeObject:
    type: object
    x-swagger-router-model: com.example.api.dto.SomeObjectDTO
...
paths:
  /mypath:
    x-swagger-router-controller: com.example.api.controller.subpkg1.MyController
    get:
      ...

上記の例から

com/example/api/dto に作成された SomeObjectDTO という名前のモデル クラスを取得できません。inflector.yaml で modelPackage が指定されていない場合、デフォルト パッケージ (io/swagger/...) に作成された SomeObject という名前のモデル クラスを取得します。いずれの場合も生成されるモデル クラス名は SomeObject.java です。

com/example/api/controller/subpkg1 で作成された MyController という名前のコントローラー クラスを取得できません。inflector.yaml で controllerPackage が指定されていない場合、デフォルト パッケージ (io/swagger/...) に作成された "MyPathController" という名前のコントローラー クラスを取得します。いずれの場合も生成されるコントローラ クラスは MyPathController.java です。

これはバグであるか、本当に明らかな何かが欠けているようです。ここに何かポインタはありますか?

4

1 に答える 1

1

swagger-inflector コードはモデルを生成しません。(x-swagger-router-model を介して) またはmodelPackage+ スキーマ名を介してルーティング情報を接続しようとします。JsonNodeそのモデルをクラス ローダーにロードできない場合、このモデルはすべての入力 (put/post) メソッドの jackson として扱われます。

于 2015-10-12T00:34:50.903 に答える