Наш проект переходит на Angular4 и использует @angular/common/http Httpclient
в качестве сетевого инструмента по умолчанию. Но я обнаружил, что в функции удаления нет параметров body
. Как добавить тело для удаления функции? Спасибо.
Как добавить тело в функцию удаления Angular HttpClient
Ответы (4)
Вместо этого вы можете использовать универсальный метод request
в классе HttpClient. Этот метод имеет тело в опциях. https://angular.io/api/common/http/HttpClient#members
например, this.http.request('delete', 'url', { body: ... })
person
Andrii Ivanyk
schedule
20.09.2017
@StefanFalk, вероятно, потому, что правильный способ удаления материала с помощью RESTful - это иметь уникальный URL-адрес для каждого уникального ресурса (например:
/clients/<id>
). Но, к сожалению, реальные API редко бывают RESTful.
- person Joseph Tinoco; 06.12.2018
@JosephTinoco Нет, я просто имею в виду сам звонок. Легко может быть метод
this.http.delete()
, который обертывает это s.t. интерфейс становится более интуитивным.
- person Stefan Falk; 07.12.2018
@StefanFalk Это моя точка зрения. Все интуитивные интерфейсы RESTful, все остальное возможно, но только с уродливым/менее интуитивным методом
this.http.request()
. Как будто Angular говорит, что если вам нужен красивый, читаемый код, вы должны использовать RESTful в бэкенде.
- person Joseph Tinoco; 07.12.2018
В Angular 9+ вам нужно будет
this.http.request('DELETE', 'url', { body: ... })
. В моем случае была необходима строка метода в верхнем регистре.
- person Michael Czechowski; 03.09.2020
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' }), body: your body data
};
return new Promise(resolve => {
this.httpClient.delete(URL, httpOptions)
.subscribe(res => {
resolve(res);
}, err => {
resolve(err);
});
});
используя httpOptions, вы можете установить в нем заголовок и тело. пожалуйста, обратитесь к этому https://angular.io/tutorial/toh-pt6#delete-a-hero
person
Nasreen Ustad
schedule
10.04.2018
Не уверен, какую версию Angular вы используете, но это не работает в Angular 5 с использованием HttpClient. Файл типов указывает, что тело не существует. Вам нужно использовать
this.http.request
- stackoverflow.com/a/46316857/1148107
- person mtpultz; 10.08.2018
У меня также возникает эта проблема, и мое решение заключается в создании нового метода HttpRequest
удаления, затем клонировании этого запроса, сбросе его тела с вашими данными.
let req = new HttpRequest('DELETE', 'url');
let newReq = req.clone({body: [10]});
this.http.request(newReq).subscribe((res) => {
console.log(res);
}, (err) => {
console.log(err);
});
clone()
требуется, потому что тело по-прежнему нельзя напрямую установить в new HttpRequest()
.
person
Yitim
schedule
15.09.2017
Действительно, создание HttpRequest с методом delete и прямой передачей тела в конструкторе не работает. Тем не менее, он отлично работает с методом post
- person seza443; 28.12.2017
person
schedule
Этот вопрос уже содержит несколько ответов. Можете ли вы объяснить (отредактировав свой ответ), чем ваш ответ отличается от других ответов? Также знайте, что ответы только для кода бесполезны в долгосрочной перспективе.
- person 7uc1f3r; 18.01.2021
Я думаю, что этот код добавляет параметр; не содержание тела как запросы OP.
- person steve; 14.06.2021
http.request()
, как Андрей Иванык, опубликованный ниже. он был удален, потому что спецификация Delete неясна в отношении использования в нем BODY. - person Stavm   schedule 08.02.2018