C# .net 核心 web api post 参数始终为 null
C# .net core web api post parameter always null
所以这让我抓狂。我正在做一些非常简单的事情,向我的网站 api 发送 POST 请求。端点设置如下:
[HttpPost]
[Route("locations")]
public async Task<IActionResult> PostLocations([FromBody]IEnumerable<Location>locations)
我正在拨打如下电话:
http://localhost:60254/api/Fetch/locations
With the body
{
"Locations": [
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
}
And header: content-type: application/json
再一次,这是非常简单的东西,应该开箱即用,这个该死的框架变化把一切都搞砸了。
现在,如果我获取 HttpContext 并直接读取 body 流
using (StreamReader reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8))
{
string body = reader.ReadToEnd();
}
我可以看到 body 被正确发送,我有一个超级好的 json 可以转换成我想要的任何东西。所以问题是我错过了什么这个端点不起作用?
Web api 项目模板没有立即添加哪些配置才能使其正常工作?
您的负载不是 Location
的列表,而是具有 Locations
属性 的对象,这是一个列表。
而不是
{
"Locations": [
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
}
使用
[
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
不要传递 json 对象,传递字符串化对象:
var location = [
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
var dataToPost = JSON.stringify(location);
对于其他人...确保您的 [FromBody]
模型和所有子模型 类 具有无参数构造函数
所以这让我抓狂。我正在做一些非常简单的事情,向我的网站 api 发送 POST 请求。端点设置如下:
[HttpPost]
[Route("locations")]
public async Task<IActionResult> PostLocations([FromBody]IEnumerable<Location>locations)
我正在拨打如下电话:
http://localhost:60254/api/Fetch/locations
With the body
{
"Locations": [
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
}
And header: content-type: application/json
再一次,这是非常简单的东西,应该开箱即用,这个该死的框架变化把一切都搞砸了。
现在,如果我获取 HttpContext 并直接读取 body 流
using (StreamReader reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8))
{
string body = reader.ReadToEnd();
}
我可以看到 body 被正确发送,我有一个超级好的 json 可以转换成我想要的任何东西。所以问题是我错过了什么这个端点不起作用?
Web api 项目模板没有立即添加哪些配置才能使其正常工作?
您的负载不是 Location
的列表,而是具有 Locations
属性 的对象,这是一个列表。
而不是
{
"Locations": [
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
}
使用
[
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
不要传递 json 对象,传递字符串化对象:
var location = [
{
"LocationId": "111",
"ProductId": 110,
"Sku": "11131-LJK"
}
]
var dataToPost = JSON.stringify(location);
对于其他人...确保您的 [FromBody]
模型和所有子模型 类 具有无参数构造函数