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

如何在ASP.NET Core Web API中添加数据模型?GET请求报错解析

问题分析与解决方案

能不能这么实现?

不能直接这么做,问题出在HTTP规范和Swagger的请求发送逻辑上。

问题根源

HTTP标准明确规定:GET/HEAD方法的请求不允许携带请求体。虽然ASP.NET Core后端理论上支持从GET请求的body绑定模型,但Swagger依赖浏览器的fetch API发送请求,而fetch会严格遵守HTTP规范,一旦发现GET请求带body就直接抛出你看到的TypeError。

两种可行的解决办法

1. 改用POST请求(推荐)

把接口改成POST方法,用请求体传递复杂模型,这符合HTTP规范,Swagger也能正常调用:

[HttpPost("SQLite/ExcelReport/")]
public FileResult GetExcelReport([FromBody] SomeComplexDataModel someComplexDataModel)
{
    // 你的业务代码,返回文件
}

2. 坚持用GET:将模型属性转为查询参数

如果业务上必须用GET,可以不用改控制器的HttpGet特性,ASP.NET Core会自动把模型的每个属性映射为URL的查询参数。比如请求URL会变成:
/SQLite/ExcelReport/?DOSomething=true&DoThisAndThis=false&StartDateDaily=2024-01-01T00:00:00

不过要注意两点:

  • DateTime参数需要用ISO 8601格式(比如yyyy-MM-ddTHH:mm:ss),Swagger会自动生成符合要求的输入框
  • URL有长度限制,如果模型属性太多、参数值太长,可能会触发浏览器或服务器的长度限制报错,这种情况还是POST更稳妥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:50:22