Angular向.NET API发送POST请求时参数property为null,求解决建议
POST请求.NET API参数始终为null的解决建议
我尝试调用一个简单的POST请求,但.NET API中的参数property值始终为null,请问有什么解决建议吗?
后端C#代码
[Route("getpagefields")] [AcceptVerbs(WebRequestMethods.Http.Post)] public IHttpActionResult GetPageFields([FromBody]string property) { USERS user = TokenUtils.Authonticate(Request); return Ok(new { fields = WebServiceBL.GetPageFields(property) }); }
前端TypeScript代码
GetPageFields(){ debugger; let urlPart = this.router.url.split('/')[3]; let params = new HttpParams(); params = params.set('data', urlPart); let test = this._httpClient.post(environment.apiBaseUrl+'users/getpagefields',params).subscribe(() => { }); }
请求截图

解决建议
前端请求体格式不匹配:当前前端用
HttpParams传递的是表单格式数据,但后端[FromBody]接收的是请求体中的原始字符串,两者无法映射。修改前端直接传递字符串作为请求体,并指定对应请求头:GetPageFields(){ debugger; let urlPart = this.router.url.split('/')[3]; let test = this._httpClient.post(environment.apiBaseUrl+'users/getpagefields', urlPart, { headers: new HttpHeaders({ 'Content-Type': 'text/plain' }) }).subscribe(() => { }); }调整后端接收逻辑(可选):如果想保留前端表单传递方式,后端需修改参数接收规则:
- 改用表单接收参数,同时匹配前端参数名
data:public IHttpActionResult GetPageFields([FromForm]string data) - 或者定义DTO类接收JSON格式请求(更符合RESTful规范):
对应前端传递JSON对象:public class PageFieldRequest { public string Data { get; set; } } [Route("getpagefields")] [AcceptVerbs(WebRequestMethods.Http.Post)] public IHttpActionResult GetPageFields([FromBody]PageFieldRequest request) { USERS user = TokenUtils.Authonticate(Request); return Ok(new { fields = WebServiceBL.GetPageFields(request.Data) }); }GetPageFields(){ debugger; let urlPart = this.router.url.split('/')[3]; let test = this._httpClient.post(environment.apiBaseUrl+'users/getpagefields', { data: urlPart }).subscribe(() => { }); }
- 改用表单接收参数,同时匹配前端参数名
检查请求头一致性:确保前端发送的
Content-Type与后端期望匹配。传递纯字符串时设为text/plain,传递JSON时Angular会自动设置application/json,无需手动配置。
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

