我有一个 Swagger 文件 (OAS 2),其端点用于下载文件。我正在使用 openapi-generator(通过 Maven 插件)来生成 Java / OpenFeign 客户端代码。
问题是这个特定的端点转换为:
@RequestLine("GET /files/{id}/content")
@Headers({
"Accept: application/octet-stream",
})
File downloadByIdUsingGET(@Param("id") String id);
null
调用时返回。据此,正确的方法配置文件应该是:
Response downloadByIdUsingGET(@Param("id") String id);
事实上,如果我自己编写接口,我可以使用这种方法:
Response downloadResponse = api.downloadByIdUsingGET(id);
InputStream downloadInputStream = downloadResponse.body().asInputStream();
所以问题是:如何配置生成器以使用Response
此端点的类型?
我努力了:
<typeMappings>file=feign.Response</typeMappings>
但这会将File
type替换为Response
任何地方,包括在我不想要的其他端点中,特别是(猜猜是什么)上传端点,它生成为:
FileProperties uploadUsingPOST(@Param("file") File file);
并且像这样工作正常。
这是 Swagger 文件的相关部分:
"/files/{id}/content": {
"get": {
"produces": [
"application/octet-stream"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": "string",
}
],
"responses": {
"200": {
"description": "Successful",
"schema": {
"type": "file"
}
}
}
}
}