Pie*_*tje 6 asp.net asp.net-mvc json fiddler asp.net-web-api
我有一个示例控制器:
[RoutePrefix("api/Example")]
public class ExampleController : ApiController
{
[Route("Foo")]
[HttpGet]
public string Foo([FromUri] string startDate)
{
return "This is working";
}
[Route("Bar")]
[HttpPost]
public string Bar([FromBody] DateTime startDate)
{
return "This is not working";
}
}
Run Code Online (Sandbox Code Playgroud)
当我发出GET请求时:http://localhost:53456/api/Example/Foo?startDate=2016-01-01它有效.
当我POST到http://localhost:53456/api/Example/Bar我收到HTTP/1.1 400 Bad Request错误.
这是我的POST数据:
{
"startDate":"2016-01-01T00:00:00.0000000-00:00"
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您不能直接发布非对象,在使用时需要将它们包装在对象容器的旁边FromBody.
[RoutePrefix("api/Example")]
public class ExampleController : ApiController
{
[Route("Foo")]
[HttpGet]
public string Foo([FromUri] string startDate)
{
return "This is working";
}
[Route("Bar")]
[HttpPost]
public string Bar([FromBody] BarData data)
{
return "This is not working";
}
}
public class BarData{
public DateTime startDate {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
它可以工作的另一种方式是使用=符号对这样的值进行形式编码(注意你将它作为非对象发送,花括号已被删除).
"=2016-01-01T00:00:00.0000000-00:00"
Run Code Online (Sandbox Code Playgroud)
尝试只发布:
{
"2016-01-01T00:00:00.0000000-00:00"
}
Run Code Online (Sandbox Code Playgroud)
指定属性名称意味着您的端点需要接受具有名为 的属性的对象startDate。在这种情况下,您只想传递一个DateTime.
| 归档时间: |
|
| 查看次数: |
15640 次 |
| 最近记录: |