我在ASP.NET WebAPI 2应用程序中访问通过POST提交的参数时遇到问题。我有一个非常简单的控制器和一个动作,它只是捕获参数并返回200。
public IHttpActionResult Post([FromBody] string foo)
{
return Ok();
}
我通过cURL
提出请求curl http://localhost:24196/api/checkpoints -XPOST -d foo=bar
参数最终为null
。当我用jQuery尝试这个时,也会发生同样的情况。
$.post("http://localhost:24196/api/checkpoints", { foo: "bar" })
I've found a post that seems to describe this issue,但我不确定这是否真的是解决此问题的正确方法(使用=
编码)。
与WebAPI服务交谈的正确/标准方式是什么,参数绑定在这些情况下如何实际工作?
答案 0 :(得分:2)
正如链接中所述,FromBody
期望数据以某种方式=foo
- re:没有"键"。所以:
卷曲:
curl -X POST -d "=bar" http://localhost/controller
Jquery的:
var _data = { "": "bar" };
更新
此行为的参考:Sending simple types
默认情况下,Web API会尝试从请求URI中获取简单类型。 FromBody 属性告诉Web API从请求正文中读取值。
...如果您需要从请求正文中获取多个值,请定义复杂类型。
其次,客户端需要使用以下格式发送值:
=值
... H个