Мой бэкэнд-API Java ожидает многочастный запрос POST для формы на внешнем интерфейсе Angular, которая в настоящее время использует реактивные формы. Конечная точка выглядит следующим образом:
@PostMapping("/submit")
public ResponseEntity<?> submit(
@RequestParam String requester,
@RequestParam String subject,
@RequestParam String description,
@RequestParam String htmlBody,
@RequestParam String customFieldValues,
@RequestParam List<MultipartFile> attachments) {
return myBackendService.submitToZendesk(
requester, subject, description, htmlBody, customFieldValues, attachments);
}
Функция отправки в компоненте Angular выглядит следующим образом (в настоящее время используются поддельные данные формы):
public onSubmit(): void {
const formData = new FormData();
formData.append('requester', 'ryan');
formData.append('subject', 'Test Subject',);
formData.append('description', 'test desc',);
formData.append('htmlBody', '',);
formData.append('customFieldValues', 'test');
this.frontendService.submitForm(formData).subscribe(
res => console.log(res),
err => this.onHandleError(err)
);
}
Служба:
public submitForm(payload: any): Observable<any> {
return this.resourceService.submitForm(payload)
}
И, наконец, служба ресурсов:
public submitShippingAuth(payload: ShippingAuthRequest): Observable<any> {
const url = `${environment.api}/submit`
return this.http.post(`${url}`, payload)
.pipe(map(this.extractResponse), catchError(this.handleError))
}
Я получаю код состояния 400 с сообщением:
error: "Bad Request"
message: "Required String parameter 'requester' is not present"
path: "/v1/submit"
status: 400
timestamp: 1571771034002
trace: "org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'requester' is not present
Но полезная нагрузка моего запроса, безусловно, имеет вид-данные:
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="requester"
ryan
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="subject"
Test Subject
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="description"
test desc
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="htmlBody"
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="customFieldValues"
test
------WebKitFormBoundaryTIuEnyoDjbqZHnFA--
Кто-нибудь знает, что я здесь не так делаю? Форма-данные POST в Почтальоне работает.