Swagger-codegen-maven-pluginを使用してOpenAPIファイル(OpenAPI 3.0.2)からSpringインターフェースを生成しています
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.14</version>
1つのREST APIの応答はPDF file
components:
schemas:
contractFile:
type: string
format: binary
生成されたJava RESTインターフェイスには次のメソッドが含まれます
default ResponseEntity<File> getContract(@ApiParam(value = "File to download",required=true) @PathVariable("uid") String uid) {
...
}
ファイルクラスはファイルシステムへのパスを表しますが、ファイルシステムにはファイルがありません。Javaメモリのバイト数であり、ファイルとしてディスクに保存したくありません。
GetContractがメモリ内のストリーム/バイトからストリームリソースまたはファイルの他の表現を返すようにしたい。これはswagger-codegen-maven-pluginまたは他のオプションを介して可能ですか?
多分あなたはこのようなものを試すことができます
/myendpoint:
get:
tags: [myendpint]
summary: my cool endpoint
operationId: getStuff
x-custom-return-type: 'Java.something.stream.Stream'
moustacheを使用し、ベンダー拡張付きのmoustacheファイルで指定するより
ResponseEntity<{{#responseWrapper}}{{
.}}<{{/responseWrapper}}{{>returnTypes}}{{#vendorExtensions.x-custom-return-type}}
私はそれをインターフェースAPIに使用し、おそらくあなたのケースでもそれを使用できます
次のようなものを試してください:
responses:
'200':
description: A PDF file
content:
application/pdf:
schema:
type: string
format: binary