Почему угловой ответ HttpClient равен нулю? - PullRequest
0 голосов
/ 20 апреля 2019

Моя среда:

  • Магазин RestController: Spring Boot
    • на локальном ноутбуке в Ubuntu 18: 04
  • ShopService: Angular HttpClient
    • на настольном ПК localhost windows 10

Проблема:

Мой запрос на получение черезHttpClient получил нулевой ответ.Но если я использую почтальон или браузер, я получу ожидаемое тело ответа.

Угловой код:

const BASE_URL = 'http://pc01:8081/shopsystem/shops';
const  SHOP_NAME = 'Muster Shop';

@Injectable({
  providedIn: 'root'
})
export class ShopService {

  shop$: Shop;
  address$: Address;
  owner$: Owner;

  //header = new HttpHeaders({ 'Content-Type': 'application/json' });

  constructor(private http: HttpClient) { }

  public getShop(): Observable<Shop>{
    return this.http.get<Shop>(BASE_URL + '/' + SHOP_NAME);
  }

Заголовок ответа:

enter image description here

Ответ:

enter image description here

Запрос на почтальона:

enter image description here

Пружинный контроллер загрузки:

enter image description here

Я уже пробовал с Observable с любым и HttpHeaders с application / json, но с тем же ответом.

Другое дело: если мой контроллер Spring Boot возвращает List, то я получил тело ответа с содержимым.

Вопрос:

Почему я получилпустое или пустое тело в моем запросе HttpClient?

Как мне решить эту проблему?

Спасибо

1 Ответ

1 голос
/ 20 апреля 2019

Ваш Angular HttpClient кодирует пространство в переменной пути, поэтому он поступает в RestController как Muster% 20Shop .

Затем вы пытаетесь найти запись с таким точным именем, которого не существует.

Вы должны декодировать @PathVariable, прежде чем отправить его на свой запрос как Muster Shop .

...