3

私は swagger-spring-mvc 0.9.5 を使用しており、応答データに次のようなフィールドがあります。

@ApiModelProperty("Some description")
private List<Account> accounts;

質問の短いバージョン:この注釈付きの Java から、swagger-codegen 経由でたとえば Objective C にアクセスするにはどうすればよいですか?

それによって生成されるswagger JSONは次のとおりです。

accounts: {
  description: "Some description",
  items: {
    type: "Account"
  },
  required: false,
  type: "List"
}

私の同僚はこれを swagger-codegen に入力して Objective C クラスを生成していますが、コンパイルできないコードを生成しています。

@property (nonatomic, strong) NSArray<Optional, NSArray> *accounts;

NSArray(内< >)はプロトコルではないためです。

swagger テンプレート ファイル (mustache) は、各モデルのプロトコルを作成します。そのプロトコルが配列で指定されると、リスト/配列内のデータから正しいモデルを生成するために JSONModel によって取得されます。したがって、この場合、期待される出力は

@property (nonatomic, strong) NSArray<Optional, MAAccount> *accounts;

これにより、NSArrayofが作成されますMAAccount(Accountはオブジェクト タイプでありMA、swagger が既に持っているプレフィックスです)。

Swagger JSON を手動で編集して変更Listするとarray(さまざまな同様のケースで提案されているように)、出力は正しいですが、この手動の手順は避けたいと考えています。

だから私は使用するswagger-spring-mvcを取得しようとしました"array":

@ApiModelProperty(value = "Some description", dataType = "array")
private List<Account> accounts;

しかし、その後、dataTypeswagger-spring-mvc 0.9.5 で無視されることが発見され、見た目から、完全修飾 Java クラス名でない限り、springfox 2.0 では無視されます。

swagger-spring-mvc/springfox を使用する"array"か、他の手段でこれを達成する方法はありますか?

4

1 に答える 1