Сообщение HttpClient возвращает либо тело было пустым, либо тело было объектом - PullRequest
0 голосов
/ 29 мая 2020

Пытаясь использовать HttpClient для публикации данных, я получаю две разные ошибки:

  1. Поскольку booking является объектом, я получаю Backend returned code 400, body was: [object Object].
  2. Используя JSON.stringify(booking) Я получаю Backend returned code 415, body was: null.

Как так?

public addBooking(booking): Observable<any[]> {
  return this.http.post<any[]>(`${this.url}bookings`, booking)
    .pipe(
      catchError(this.handleError)
    );
}

Объект: Использование следующего в качестве тестового объекта в swagger работает.

{
  "firstDate": "2020-05-29",
  "secondDate": "2020-05-29",
  "productId": 0,
  "userId": 0
}

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Попробуйте добавить заголовки Content-Type и Accept.

import {HttpHeaders} from '@angular/common/http';

public addBooking(booking): Observable<any[]> {
  const httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    })
  };

  return this.http.post<any[]>(`${this.url}bookings`, booking, httpOptions)
    .pipe(
      catchError(this.handleError)
    );
}

Похоже, ваши данные недействительны, потому что 400 - это неверный запрос. Кроме того, ваш сервер отвечает с ошибкой с помощью [Object object], поэтому я предлагаю вам использовать что-то вроде JSON.stringify на вашем сервере, чтобы ответить правильным текстом ошибки

0 голосов
/ 29 мая 2020

Либо проблема в том, что вы не установили Content-Type в заголовках как application / json. В противном случае проблема может заключаться в том, что «бронирование» на самом деле не JSON, которое содержит упомянутые данные.

Примечание: укажите данные, которые вы отправляете в API (вместе с ответом)

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