如何接收通过 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 请求?