【发布时间】:2024-05-03 19:25:07
【问题描述】:
我有一个非常简单的问题:)
根据feign文档,他们支持通过api函数like so传递URI参数来动态改变feign客户端对象的basePath:
好例子:
interface MyClient {
@RequestLine("GET /internal-service")
String internalService(URI baseUrl);
}
问题是我正在使用 swagger,它从 yaml 文件生成我的 API 并将 @Param 注释添加到所有函数参数,这对我不利。
不好的例子:
interface MyClient {
@RequestLine("GET {baseUrl}/internal-service")
String internalService(@Param("baseUrl") String host);
}
有没有办法让 swagger 生成器生成带有 URI 参数的 API,而无需 @Param 注释?
期望的结果示例:
interface MyClient {
@RequestLine("POST /internal-service")
String internalService(URI baseUrl, @Param("someParam") String someParam);
}
【问题讨论】:
-
要得到这个,你必须修改模板和生成器,你可以在 github 上打开一个问题作为对 feign 生成器的增强或建议,因为这是语言的一部分。首先,您必须能够区分 yaml 中的 URI 参数,以便它可以在生成器中进行不同的解析,并在模板中正确显示,从而生成代码。
-
非常感谢@moondaisy!没错,我需要更改模板,但不一定要更改生成器。我可以使用配置让 swagger 使用我的新模板。无论如何,我会按照您的建议建议对 swagger 进行这种增强:)
-
这行得通,但它会将
URI参数放在所有接口的所有方法中,我虽然你可能想要一些没有它,这就是我建议修改生成器的原因。很高兴您找到了解决方案!
标签: swagger swagger-2.0 swagger-codegen netflix-feign feign