Как правильно отправить карту из углового клиента в весенний загрузочный контроллер в теле запроса?Полученная карта всегда пуста - PullRequest
1 голос
/ 07 мая 2019

угловой клиент - запрос отправки httpClient

const map: Map<string, string> = new Map<string, string>();
map.set('foo', 'bar');
this.http.post(address, map, httpOptions).subscribe(
  next => console.log('next: ' + next),
  error => console.log('error: ' + error),
  () => console.log('complete')
);

Сервер Springboot - запрос контроллера на получение

@RequestMapping(value = "/foobar", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public void fooBar(@RequestBody Map<String, String> foo){
    System.out.println(foo.entrySet());  //<-- always empty
}

1 Ответ

1 голос
/ 07 мая 2019

Вы должны преобразовать карту в массив пар ключ-значение, поскольку оказывается, что карты Typescript нельзя использовать непосредственно внутри тела сообщения http.

Вы можете преобразовать карту следующим образом:

const convMap = {};
map.forEach((val: string, key: string) => {
  convMap[key] = val;
});
this.http.post(apiBaseUrl + '/foobar', convMap, httpOptions).subscribe(
      next => console.log('next: ' + next),
      error => console.log('error: ' + error),
      () => console.log('complete')
);

В фоновом режиме ваш System.out.println(foo.entrySet()); выведет следующее: [foo = bar]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...