RequestParam не может отловить значения, отправленные из Angular - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь отправить запрос через FormData от Angular на сторону Spring-Boot. Я еще не решил проблему. Я могу создать запрос с помощью «Почтальон». Клиентская сторона также может ответить на этот запрос. Spring-Boot выдает ошибку, если я пытаюсь отправить его через Angular. Что вызывает эту проблему?

Сторона пружины

@CrossOrigin(origins = {"*"}, methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE, RequestMethod.PATCH})
@RestController
@RequestMapping("/api/product")
public class ProductController {

    @PostMapping(value = "/save")
    public ResponseEntity<Object> saveProduct (@RequestParam("coverImage") String[] coverImage, @RequestParam("alt") String[] alt) {
        //
        return ResponseEntity.ok().body(null);
    }

}

Angular Сторона

public saveProduct() {
  const formdata = new FormData();
  formdata.append('coverImage', 'imageName1');
  formdata.append('coverImage', 'imageName2');
  formdata.append('alt', 'altName1');
  formdata.append('alt', 'altName2');
  this.niceClient(formdata).subscribe();
}

public niceClient(formData: FormData): Observable<any> {
    return new Observable(observer => {
      this.http.post<any>('http://localhost:7070/api/product/save', formData).subscribe(res => {
        observer.next(res);
        observer.complete();
      });
    });
  }

Ответ

{"timestamp":"2020-03-28T15:00:17.740+0000","status":400,"error":"Bad Request","message":"Required String[] parameter 'coverImage' is not present","path":"/api/product/save"}

Я решил: Спасибо друзьям, которые помогли.

Если вы используете перехватчик на Angular, сначала проверьте его. Изменение некоторых строк кода помогло решить проблему.

У меня есть строка для каждого запроса:

 request = request.clone({headers: request.headers.append('Content-Type', 'application/json; charset=UTF-8')});

Итак, я изменил следующим образом:

if (request.url === 'http://localhost:7070/api/product/save') {

} else {
  if (!request.headers.has('Content-Type')) {
       request = request.clone({headers: request.headers.append('Content-Type', 'application/json; charset=UTF-8')});
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...