---
swagger: "2.0"
definitions:
Result:
properties:
data:
type: string
description: Some data result
Payload:
properties:
id:
required: true
type: integer
data:
required: true
type: string
生成了Swagger POJO之后,便在类似此类的方法中创建了
。 public Result sendMessage(int id, String data) throws IOException {
return some_clazz.go(
Result.class,
new Payload().id(id).data(data)
);
}
问题在于我有许多不同的定义,并且我几乎只是在复制模式,因为它们每个都使用通用的some_clazz.go
方法(注意:some_clazz使用genetics
,因此是第一个arg)。例如:
public AnotherResult sendMessage(int id) throws IOException {
return some_clazz.go(
AnotherResult.class,
new DifferentPayload().id(id)
);
}
是否有一种方法可以使我(或其他方式)从我的定义中生成可以传递给some_clazz.go
的类和方法?
答案 0 :(得分:0)
我不确定我是否遵循some_clazz.go的工作或您想要发送给它的内容。 但是要尝试回答您的问题-您可以扩展swagger-codegen。
为此,您必须通过扩展DefaultCodegen来扩展当前的swagger-codegen,或者更有可能扩展您当前正在使用的Codegen(SpringCodegen,AbstractJavaCodegen等,适用于您的情况)。在新的代码生成类中,您需要添加一个新模板
public void processOpts() {
super.processOpts();
supportingFiles.add(new SupportingFile("someclazzgo.mustache", invokerFolder, "SomeClazzGoImpl.java"));
因此,现在生成器将使用someclazzgo.mustache并根据您创建的模板创建SomeClazzGoImpl.java。实施该模板由您决定。您可以根据需要为每个操作或一个类实现一个方法。也许,如果您提供有关要执行的操作的更多详细信息,我可以给出更具体的示例(每次调用都调用some_clazz.go还是仅特定API?它返回值吗?)
有关如何在https://github.com/swagger-api/swagger-codegen#making-your-own-codegen-modules中扩展代码源的更多详细信息