You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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规范):
      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) });
      }
      
      对应前端传递JSON对象:
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:10:18