Angular 如何将主体添加到HttpClient删除函数
我们的项目正在迁移到Angular4,并使用Angular 如何将主体添加到HttpClient删除函数,angular,angular-httpclient,Angular,Angular Httpclient,我们的项目正在迁移到Angular4,并使用@angular/common/Httpclient作为默认的网络工具。但是我发现delete函数中没有bodyparams。如何添加正文以删除函数?谢谢 我也遇到了这个问题,我的解决方案是创建一个新的delete方法的HttpRequest,然后克隆这个请求,用您的数据重置它的主体 let req=newhttprequest('DELETE','url'); 让newReq=req.clone({body:[10]}); this.http.re
@angular/common/Httpclient
作为默认的网络工具。但是我发现delete函数中没有body
params。如何添加正文以删除函数?谢谢 我也遇到了这个问题,我的解决方案是创建一个新的delete方法的HttpRequest
,然后克隆这个请求,用您的数据重置它的主体
let req=newhttprequest('DELETE','url');
让newReq=req.clone({body:[10]});
this.http.request(newReq).subscribe((res)=>{
控制台日志(res);
},(错误)=>{
控制台日志(err);
});
您可以在HttpClient类上使用通用的请求
方法。此方法的主体位于选项中。
例如
this.http.request('delete','url',{body:…})
通过使用httpOptions,您可以在其中设置标题和正文。
请参阅此从'@angular/common/http'导入{HttpClient,HttpParams};
构造函数(私有http:HttpClient){}
deleteItem(项目:任何):可观察{
设params=newhttpparams();
params=params.append('itemId',item.itemId);
返回this.http.delete(`url`,{params});
}
他询问的可能是新的HttpClient而不是旧的http模块,但他所寻求的实现在这两种情况下都是相同的,请尝试通过共享的链接。看看这个:对于未来的读者-从Angular 4.3开始(包括Angular 5+)他们将主体从HttpClient的delete方法中删除,另一种方法是使用http.request()
,就像下面发布的Andrii Ivanyk一样。删除它是因为Delete的规范不清楚其中BODY的用法。实际上,使用方法“Delete”创建HttpRequest并直接在构造函数中传递BODY是不起作用的。但是,方法“post”可以很好地工作,不确定您使用的是Angular的哪个版本,但是这在使用HttpClient的Angular 5中不起作用。打字文件表明正文不存在。您需要使用this.http.request
-@StefanFalk,这可能是因为以RESTful方式删除内容的“正确”方法是为每个唯一的资源(例如:/clients/
)创建一个唯一的URL。但不幸的是,现实生活中的API很少是RESTful的。@JosephTinoco不,我只是指调用本身。很容易就会有一个this.http.delete()
方法来包装这个s.t。界面会更直观。@StefanFalk这是我的观点。“直观的”界面都是RESTful的,其他一切都是可能的,但只有使用丑陋/不那么直观的this.http.request()
方法。这就像Angular说的“如果你想要好的、可读的代码,你必须在后端使用RESTful”。在Angular 9+中,你需要this.http.request('DELETE','url',{body:…})
。在我的例子中,大写的方法字符串是必需的。这个问题已经包含了多个答案。你能解释一下(通过编辑你的答案)你的答案与其他答案的不同之处吗?也要知道,从长远来看,只有代码的答案是没有用的;不是作为OP请求的内容体。
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);
});
});
import { HttpClient, HttpParams } from '@angular/common/http';
constructor(private http: HttpClient) { }
deleteItem(item: any): Observable<any> {
let params = new HttpParams();
params = params.append('itemId', item.itemId);
return this.http.delete<any>(`url`, { params });
}