如何将表单数据发布到ASP.NET WebAPI 2?

时间:2014-09-05 19:08:28

标签: c# asp.net asp.net-web-api

我在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服务交谈的正确/标准方式是什么,参数绑定在这些情况下如何实际工作?

1 个答案:

答案 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个