如何解决存在正文时,不会调用Web Api操作但是没有身体就可以工作
动作定义为
[HttpPost]
[Route("api/someinterestingroute/{id}")]
public IHttpActionResult PostSome(int id,[FromBody] BodyModel model)
和模型
public class BodyModel
{
[JsonProperty("field1")]
public string Field1 { get; set; }
[JsonProperty("field2")]
public string Field2 { get; set; }
}
使用邮递员
Action
POST
----------------------------------------------------
url - localhost/myAppName/api/someinterestingroute/5
----------------------------------------------------
Headers
Content-Type: application/json
----------------------------------------------------
Body
{
"field1": "xxx","field2": "yyy"
}
行为
邮递员中出现尸体时,我没有打PostSome
动作,而得到unsupported media type
错误的响应。
当主体为空时,我击中PostSome
,看到id=5
,而model
是null
。
一个小细节是,控制器实际上是ODataController
。但是我已将其添加为非OData操作
非常感谢!
解决方法
尝试了几种不同的技术后,我找到了一种方法,以及为什么它不起作用。
正如所提到的问题-ODataController
毕竟是罪魁祸首。解决方案是创建一个新控制器,该控制器源自ApiController
,并与原始ODataController
控制器具有相同的路由
[RoutePrefix("api/someinterestingroute")]
现在动作看起来像这样
[HttpPost]
[Route("{id}")]
public IHttpActionResult PostSome(int id,BodyModel model)
现在,我的所有作品都表现得很好。 经验教训-请勿将非OData操作混入ODataController
中。虽然,问题是身体,而不是路线。当然,OData路由和绑定中有某些东西阻止了预期的数据绑定。
在这里注意:
Content-Type: appliocation/json
您写错了。正确的是application / json
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。