web api FromUri和FromBody属性误解

时间:2015-06-04 14:46:44

标签: asp.net-web-api asp.net-web-api2

我在google中找到了这个例子:

 public string GetValue([FromUri]Book b, [FromUri]Author a)
 {
     return b.Name + " ("+a.AuthorName+")";
 }

 public string PostValue([FromBody]Person p)
 {
     return  p.FirstName;
 }

如果HTTP GET方法仅分别作为URl的一部分发送数据,我无法理解 [FromUri] 属性的重点是什么, [FromBody]的意思在HTTP POST方法中使用它的属性?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

This文章解释了为什么 [FromUri] 是必要的,以及如何解决方法以便不再需要写它。

  

Web API将始终尝试从请求正文中急切地绑定非原始和非字符串的covnertible类型。虽然在许多情况下,从语义上讲,它对GET和HEAD请求没有多大意义,因为根据HTTP规范,这些是无体请求。

[FromBody] 是用来强制Web API从请求正文中读取一个简单类型。在您的示例中,Person已经是一个复杂类型,因此该属性不是必需的。值得一提的是,你不能在 FromBody 中使用两个参数,就像所说的here一样。