我的端点是一个 RestConroller,其 Post-Method 如下所示:
@PostMapping(path = "/xetra", consumes = {
MediaType.APPLICATION_JSON_VALUE,
MediaType.MULTIPART_FORM_DATA_VALUE})
public @ResponseBody void importXetra(@RequestParam("file") MultipartFile file) {
在 OpenAI Generator 之后,我得到了以下端点签名:
public importXetra(importXetraRequest?: ImportXetraRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any>;
public importXetra(importXetraRequest?: ImportXetraRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpResponse<any>>;
public importXetra(importXetraRequest?: ImportXetraRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpEvent<any>>;
public importXetra(importXetraRequest?: ImportXetraRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any> {
与
export interface ImportXetraRequest {
file: Blob;
}
我的公式如下:
<p-fileUpload name="myfile[]" [customUpload]="true" (uploadHandler)="upload($event)">
<ng-template pTemplate="toolbar">
<div class="py-1">Upload 1 Files</div>
</ng-template>
<ng-template let-file pTemplate="file">
<div>Custom UI to display a file</div>
</ng-template>
我的上传实现:
upload (event : {files: Blob[]}) : void {
let file = event.files[0] as File;
let request: ImportXetraRequest = ({} as any) as ImportXetraRequest;
request.file = file;
this.importEndpoint.importXetra(request).subscribe({
next : (res : void) => console.log("imported"),
error: (e: ErrorEvent) => console.error("error = " + e),
});
}
我不知道如何准确地调用后端,后端说这不是有效的请求。我收到 500 错误。 似乎有效负载未设置/为空。
问题是,端点没有正确的 MediaType Consumer:
@PostMapping(path = "/xetra", consumes = {
MediaType.MULTIPART_FORM_DATA_VALUE,
})
解决了问题。