web api FromUri 和 FromBody 属性误解

web api FromUri and FromBody attributes misunderstanding

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

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

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

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

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

Web API will always try to eagerly bind non-primitive and non-string covnertible types from the body of the request. While in many cases that’s all right, semantically, it doesn’t make much sense for GET and HEAD requests, since in accordance to the HTTP specification, these are body-less requests.

[FromBody] 用于强制 Web API 从请求正文中读取简单类型。在您的示例中,Person 已经是一个复杂类型,因此不需要该属性。值得一提的是,你不能像 here.

那样对 FromBody 使用两个参数