如何接收通过 HttpParams 发送的参数

Posted

技术标签:

【中文标题】如何接收通过 HttpParams 发送的参数【英文标题】:How to receive parameters send via HttpParams 【发布时间】:2019-02-24 12:53:23 【问题描述】:

我正在做一个 angular6 项目。使用表单角度服务,我调用 API 并通过以下方式发送参数:

Angular 6

GetUserList() 

var paramsT = new HttpParams();
paramsT.append('userID', '100');
paramsT.append('name', 'himadri');

return this.http.get(this.baseURLApi + "/User/GetUserList",  params: paramsT );
 

如何在asp.net core MVC web API中接收HttpParams发送的参数?尝试了以下方法,但没有成功。

.NetCore Web API

 public JsonResult GetUserList([FromQuery] string userID, [FromQuery] string name)
    
        ClsUser u = new ClsUser();
        return Json(u.GetUserListDB().ToArray());
    

【问题讨论】:

您在网络标签中得到了什么? 【参考方案1】:

您正在尝试发送如下请求:

/User/GetUserList?userID=100&name=himadri

但是,客户端实际发送的是:

/User/GetUserList?

原因是您的paramsT 是一个全新的HttpParams。注意append(string,string) 将返回一个带有给定参数名称附加值的新正文。因此,您需要将代码更改为:

var paramsT = new HttpParams()
    .append('userID', '100')
    .append('name', 'himadri');

现在请求的 URL 和查询字符串将是正确的。

见docs here

【讨论】:

@himadri 试着养成支持和接受答案的习惯。它为回答者提供了更多的互联网点。 :)【参考方案2】:

HttpParams 是不可变的,append 方法返回一个新的HttpParams 你的代码应该是:

GetUserList() 
    let paramsT = new HttpParams();
    paramsT = paramsT.append('userID', '100');
    paramsT = paramsT.append('name', 'himadri');

    return this.http.get(this.baseURLApi + "/User/GetUserList",  params: paramsT );

GetUserList() 

    const paramsT = new HttpParams()
        .append('userID', '100')
        .append('name', 'himadri');

    return this.http.get(this.baseURLApi + "/User/GetUserList",  params: paramsT );

【讨论】:

以上是关于如何接收通过 HttpParams 发送的参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Framework 中发送和接收带参数的 ajax 请求?

我可以使用哪种加密算法向/从网络服务器发送/接收数据?

图片及参数的发送及接收

图片及参数的发送及接收

如何通过电子邮件地址接收 RealityCapture 结果

如何在接收响应时通过 websocket 发送请求