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

前端传至后端的数据在调试时全部变为null的问题排查求助

问题根源与解决方案:GET请求无法传递参数到后端[FromQuery]模型

核心问题

你当前的问题本质是GET请求的data参数不会被axios转换为URL查询字符串,后端通过[FromQuery]绑定自然无法获取到值。HTTP规范中GET请求没有请求体,axios允许你设置data但不会将其附加到URL的查询参数中,导致后端接收的模型全为null/空值。

两种可行解决方案

方案1:改用POST请求并匹配参数绑定

  • 后端修改:将请求方法改为[HttpPost],同时将参数绑定特性改为[FromBody]
    [HttpPost, Authorize]
    public async Task<ActionResult<APIResponseBase<TokenDTO>>> GetTokenItems([FromBody] TokenRequest filter)
    
  • 前端保持method: "post"和data: model的写法,axios会自动将model序列化到请求体中,后端可通过[FromBody]正确解析模型。

方案2:继续使用GET请求,将参数转为查询字符串

  • 前端修改:将data替换为params,axios会自动将对象转换为URL查询参数(格式为?Token=abcd&Environment=xxx)
    const response = await axios({
        url: apiUrl,
        method: "get",
        params: model, // 替换data为params
        headers: {
            'accept': 'text/plain',
            'Authorization': 'Bearer '+ JSON.parse(localStorage.getItem('token') || '{}')
        }
    })
    
  • 后端保持[HttpGet]和[FromQuery]不变,即可正确接收查询参数并绑定到TokenRequest模型。

后续排查建议

以后遇到参数接收为null的情况,优先检查以下两点:

  • 请求方式与参数绑定的匹配性:
    • GET请求:参数需通过URL查询字符串传递,后端用[FromQuery]绑定;
    • POST/PUT等请求:参数通常放在请求体,后端用[FromBody]绑定;若需从查询字符串取参,仍用[FromQuery]。
  • 确认参数发送位置:通过浏览器Network面板查看请求的URL(GET看query部分)或请求体(POST看Payload),验证参数是否被正确发送到对应位置。

内容的提问来源于stack exchange,提问作者EvgenieT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:52:33