1

我正在使用 swagger-inflector 来设计 API。我正在尝试使用文档中指定的 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所有输入(放置/发布)方法的杰克逊。

于 2015-10-12T00:34:50.903 回答