Использование http.put() приводит к: ‘400 ошибочных запросов на исключение URL’

#angular #angular-http

#angular #angular-http

Вопрос:

 update(url: string, data: Object): Promise<Application> {
    return this.http
        .put(url, JSON.stringify(data), {headers: this.headers})
        .toPromise()
        .then(() => data)
        .catch(this.handleError);
}
  

Использование вышеупомянутой функции с допустимым URL приводит к следующему исключению:

 EXCEPTION: Uncaught (in promise): Response with status: 400 Bad Request for URL: null
  

Я использую @angular/http модуль для выполнения запроса.
Странная вещь в этой проблеме заключается в том, что другие методы модуля работают нормально ( GET , POST и DELETE ) .

Я использую следующий заголовок 'Content-Type': 'application/json' и InMemoryWebApiModule чтобы имитировать ответ.

Вызов функции put с жестко заданным значением, таким как в следующем примере, приводит к тому же исключению.

 this.http
        .put('app/applications/1', JSON.stringify(data), {headers: this.headers})
        .toPromise()
        .then(() => data)
        .catch(this.handleError);
  

Комментарии:

1. Разве это не все, что вам нужно знать: «для URL: null»?

2. Вы уверены update() , что вызывается с фактическим url значением?

3. Да, жесткое кодирование URL-адреса в функции приводит к той же проблеме.

Ответ №1:

Недавно у меня была такая же проблема. Причиной этого было то, что в моих данных не было поля с именем id, которое однозначно идентифицирует каждый элемент. Модуль @angular/http сопоставляет запрошенные данные по своему идентификатору.