как сделать запрос get из angular, чтобы передать @RequestBody в весенний загрузочный контроллер - PullRequest
1 голос
/ 11 ноября 2019

Я разрабатываю приложение для угловой пружинной загрузки. Моя цель - получить в моем контроллере пружины параметр @RequestBody. Читая посты в интернете, я обнаружил только POST-запрос, который отправляет параметры @RequestBody, а в моем случае это запрос GET. Тем не менее, я придерживаюсь метода контроллера POST. Вот мой контроллер

@RequestMapping(value = "/produitimmobilier/all/{pageSize}/{page}",
method = RequestMethod.POST,
produces = {"text/plain;charset=UTF-8", MediaType.APPLICATION_JSON_VALUE},
consumes = {"text/plain;charset=UTF-8", MediaType.APPLICATION_JSON_VALUE})
public @ResponseBody List<ProduitImmobilierDTO> findAll(@PathVariable("pageSize") int pageSize, @PathVariable("page") int page, @RequestBody Search search){
    logger.info(search.toString());
    return produitImmobilierService.findAll(pageSize, page);
}

Я пытался удержать запрос к почте на угловой стороне, как показано ниже

  getListProduitImmobilierDTO(pagesize: number, page: number, search: Search): Observable<ProduitImmobilierDTO[]> {
    const headerDict = {
      'Content-Type': 'application/json',
      Accept: 'application/json',
      'Accept-Charset': 'charset=UTF-8',
      'Access-Control-Allow-Headers': 'Content-Type'
    };

    const requestOptions = {
      headers: new HttpHeaders(headerDict)
    };
    return this.http.post<Search>('/api/produitimmobilier/all/' + pagesize + '/' + page, search, requestOptions).pipe(map((jsonArray: any) =>jsonArray.map((jsonItem) => ProduitImmobilierDTO.fromJson(jsonItem))));
  }

, и я получил эту ошибку

Error:  occured while trying to proxy to: localhost:4200/api/produitimmobilier/all/5/1
Message: Http failure response for http://localhost:4200/api/produitimmobilier/all/5/1: 504 Gateway Timeout

Как я понял, я не могу поставить пост с параметром объекта поиска и получить Observableответ. Я абсолютно ничего не нашел в интернете. Можешь мне помочь ?

1 Ответ

0 голосов
/ 11 ноября 2019

Возможно, я неправильно понял вопрос и, возможно, ошибаюсь, но вы отправляете запрос на сервер по угловому адресу приложения. Это можно увидеть в тексте ошибки localhost:4200/api. Попробуйте связаться с сервером по рабочему адресу. Например:

return this.http.post<Search>('http:localhost:8080/api/produitimmobilier/all/' + pagesize + '/' + page, search, requestOptions).pipe(map((jsonArray: any) =>jsonArray.map((jsonItem) => ProduitImmobilierDTO.fromJson(jsonItem))));

Вместо http://localhost:8080 вам нужно вставить адрес вашего сервера

...