Запрос PUT от Angular5 на загрузку пружины - PullRequest
0 голосов
/ 09 июня 2018

Как вы знаете, запрос на размещение выглядит следующим образом:

put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>

Итак, в угловом для моего случая это выглядит так:

updateIntervention(id:number,idDev:number){
    if(this.authService.getToken()==null) {
      this.authService.loadToken();
    }
    return this.http.put(this.host+"/updateIntervention/"+id,idDev,{headers:new HttpHeaders({'Authorization':this.authService.getToken()})});
  }

Таким образом, в Spring-data (back end) метод, ожидающий запрос PUT, должен выглядеть примерно так:

@RequestMapping(value="/updateIntervention/{id}",method = RequestMethod.PUT)
 public Intervention update(@PathVariable Long id , @RequestBody B obj){

 ... 
}

Итак, объект obj представляет собой объект класса B с атрибутом типа Long, который будет возвращать тело запроса PUTотправлено angular5.

моя проблема в том, что я продолжаю создавать эти разные классы в данных Spring (потому что иногда я отправляю только один атрибут в теле, поэтому я создаю новый класс для его представления), чтобы я мог получитьтело, отправленное angular, даже если оно содержит только один атрибут, как в этом случае idDev.

существуют ли лучшие способы избежать создания новых классов в данных Spring, поэтому я не могу получить отправку idDev внешним интерфейсом в теле?

Если я ставлю только для примера:

public Intervention update(@PathVariable Long id , @RequestBody long idDev){

я получаю ошибку десериализации и т. Д.

Любая идея или это невозможно?

1 Ответ

0 голосов
/ 09 июня 2018

Введите ваш параметр как form-data и используйте @RequestParam, чтобы получить его в вашем контроллере:

public Intervention update(@PathVariable Long id , @RequestParam long idDev){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...