2016-10-11 1 views
1
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 результатов в следующем за исключением:Использование http.put() приводит к: «400 Bad Request для URL исключения»

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

Я использую @angular/http модуль для выполнения запроса. Странная вещь об этой проблеме заключается в том, что другие методы модуля работают нормально (GET, и 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»? – Matt

+0

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

+0

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

ответ

0

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