【问题标题】:ASP.NET WebAPI - Issues with [FromBody]ASP.NET WebAPI - [FromBody] 的问题
【发布时间】:2015-02-02 16:32:29
【问题描述】:

我希望实现一个新的 API,但我选择了 C#,而不是我通常的 PHP 路线。

我对“MVC 4 API”示例进行了一些尝试,但到目前为止,我似乎无法让我的请求正常工作。

我创建了一个名为“Values”的控制器并具有以下方法:

[HttpPost]
public void Post([FromBody]string value)
{
    string body = value;
}

然后我通过 fiddler 向所述 API 发送了以下 POST 请求:

User-Agent: Fiddler
Host: localhost:56501
Content-Length: 10
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

value=test

运行此之后,看起来好像正在调用该方法,但是当尝试获取通过主体发送的“值”时,它似乎没有接收到它,而是给了我一个 null。

【问题讨论】:

  • 您可以尝试使用调试器查看您在 Request.Form 中得到了什么吗?对我来说,这通常有助于查看我做错了什么:) var x = Request.Form;,该/下一行上的断点,将鼠标悬停在对象上并单击对象以查看其中的内容:)

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


【解决方案1】:

我似乎无法让它为Content-Type: application/x-www-form-urlencoded 工作,但这应该同时工作:)

User-Agent: Fiddler
Host: localhost:56501
Content-Length: 6
Content-Type: application/json; charset=UTF-8

"test"

所以我发现如果您需要使其与application/x-www-form-urlencoded 一起工作,那么您只需将=value 作为您的请求正文传递。绝对很奇怪,但我想这不是 MVC,它是 WebApi,所以无论如何你都不应该传递 application/x-www-form-urlencoded ;)

【讨论】:

  • 这确实有效,是的,但理想情况下我想保留它的名称。不过谢谢你,这将在未来派上用场:-)
  • 如果你真的想给它命名,你可以创建一个只有一个属性的viewModel,然后去掉[FromBody]属性
  • 我认为您提供的内容已经为我提供了足够的信息来使用 JSON 对象而不是表单编码的帖子。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-09-05
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多