如何在Angular2的DELETE请求中传递参数

Posted

技术标签:

【中文标题】如何在Angular2的DELETE请求中传递参数【英文标题】:How to pass parameter in DELETE request in Angular2 【发布时间】:2017-05-04 08:56:12 【问题描述】:

我正在尝试在 Angular 2 中创建 Delete 请求。

我所做的是这样的-

import  Component  from '@angular/core';
import  Http, RequestOptions, URLSearchParams  from '@angular/http';
//import  Http, Response, Headers, RequestOptions, URLSearchParams  from '@angular/http';
import  Profile  from '../../dataModel/Profile.ts';   //Data Model

@Component(
    selector: 'profile-list',
    template: require('./profileList.component.html'),
    styles: [require('./profileList.component.css')]
)

export class ProfileListComponent

    private _deleteProfileUrl: string = "/api/Profile/Delete";

    constructor(private http: Http)
    
    

    public deleteProfile(profileId)
    
        this.http.delete(this._deleteProfileUrl, new RequestOptions(
            // Have to make a URLSearchParams with a query string
            search: new URLSearchParams('profileId=' + profileId) // <-----
        ));

        alert("Deleted - " + profileId);
    

所以,我正在创建一个这样的删除请求-

this.http.delete(this._deleteProfileUrl, new RequestOptions(
        // Have to make a URLSearchParams with a query string
        search: new URLSearchParams('profileId=' + profileId) // <-----
    ));

但它不工作并且没有给出任何错误。

因为如果调用了deleteProfile函数,只有alert来了,而没有做任何AJAX请求。

因为在调用函数后我有这样的事情-

我保证 API 运行良好。

那么,谁能帮我解决我做错了什么?

此外-

我的完整代码可以在here (if needed)找到。

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

Observables 是惰性的。即使您不想处理响应,您也必须订阅它们才能执行请求。所以可以这样写:

this.http.delete(this._deleteProfileUrl, new RequestOptions(
     search: new URLSearchParams('profileId=' + profileId)
   )).subscribe(res => 
     alert("Deleted - " + profileId);
   );

【讨论】:

以上是关于如何在Angular2的DELETE请求中传递参数的主要内容,如果未能解决你的问题,请参考以下文章

Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

axios delete 请求

如何在 HTTP DELETE 请求中传递身份验证详细信息?

Postman请求发送—PUT&DELETE

Angular 2 - 如何传递 URL 参数?

delete post put get请求参数