如何解决如何正确声明二进制数据响应的内容类型?
对于正在使用的Web应用程序,我需要为音频文件获取一些二进制(元)数据。
这是端点的样子:
@RequestMapping(
value = "/tracks/{trackId}/metadata",method = RequestMethod.GET,produces = MediaType.APPLICATION_OCTET_STREAM_VALUE
)
@ApiResponse(
description = "Successful Operation",responseCode = "200",content = @Content(mediaType = MediaType.APPLICATION_OCTET_STREAM_VALUE)
)
public StreamingResponseBody getTrackMetadata(@PathVariable("trackId") Long trackId) {
TrackEntity track = this.trackService.getTrack(trackId);
String bucketName = track.getBucketName();
String bucketFilename = track.getBucketFilename();
return outputStream -> {
final int headerSize = 4; // FIXME Get this from file ..
InputStreamResource inputStreamResource = this.trackService
.readChunk(bucketName,bucketFilename,0);
try (InputStream inputStream = inputStreamResource.getInputStream()) {
StreamUtils.copyRange(inputStream,outputStream,headerSize);
}
};
}
这些是Endint生成的签名:
/**
* @param trackId
* @param observe set whether or not to return the data Observable as the body,response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
getTrackMetadata(trackId: number,observe?: 'body',reportProgress?: boolean): Observable<any>;
getTrackMetadata(trackId: number,observe?: 'response',reportProgress?: boolean): Observable<HttpResponse<any>>;
getTrackMetadata(trackId: number,observe?: 'events',reportProgress?: boolean): Observable<HttpEvent<any>>;
但是,当我尝试加载数据时,我收到了HttpErrorResponse
:
Http failure during parsing for https://192.168.178.25:8443/api/tracks/1/metadata
其中揭示了客户端尝试将数据解析为JSON:
Unexpected token I in JSON at position 0
SyntaxError: Unexpected token I in JSON at position 0↵ at JSON.parse (<anonymous>)
at XMLHttpRequest.onLoad (https://localhost:4200/vendor.js:30205:51)
...
似乎生成的客户端代码没有意识到数据不是JSON格式的事实。
我还尝试将content
中的@ApiResponse
设置为
content = @Content(schema = @Schema(type = "string",format= "byte"))
但结果是相同的。
我该如何解决?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。