Angular 2 HttpClient删除包含整数数组?

时间:2018-02-16 09:41:58

标签: angular asp.net-web-api httpclient

我试图使用角度2调用MVC Web API。我的端点看起来像这样:

[HttpDelete]
[Route("DeleteMe")]
public ActionResult DeleteItems([FromQuery] string objectId, [FromBody] int[] toDelete) {
    //logic
}

我可以使用邮递员测试这个,我使用内容类型' application / json'来设置正文,并输入以下数据。

[1,2,3]

这很好用。但是我无法使用角度2重新创建此调用。我使用HttpClient进行调用,并且代码类似于此:

public callDeleteItems(objId: number, toDelete: number[]) {
    var serviceEndpoint = "endpoint here?objectId=" + objId;
    const params = new HttpParams().set("toDelete", JSON.stringify(toDelete));
    this.http.request('delete', serviceEndpoint, {
        params: params
    }).subscribe();
}

1 个答案:

答案 0 :(得分:0)

您必须使用URLSearchParams

生成您的网址

public getURL(objId: number, toDelete: number[]): string {
    const urlParams: URLSearchParams = new URLSearchParams();
    urlParams.set('objectId', objId.toString());
    toDelete.forEach(n => urlParams.append('toDelete', n.toString()));
    return '/endpoint?' + urlParams.toString();
}

当您必须发送数组时,您必须使用append方法

示例:

this.getURL(12, [1, 2, 3]);

将生成网址

/endpoint?objectId=12&toDelete=1&toDelete=2&toDelete=3

您的网络API控制器操作应为

[HttpDelete]
[Route("DeleteMe")]
public ActionResult DeleteItems([FromUri] string objectId, [FromUri] int[] toDelete) {
    //logic
}

Demo