[英]Generate Java methods from swagger yaml to be used with my own methods
---
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
类和方法?
我不确定我遵循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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.