Web api FromUri和FromBody属性误解

问题描述 投票:2回答:1

我在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方法?

asp.net-web-api asp.net-web-api2
1个回答
3
投票

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

Web API将始终尝试从请求正文中急切地绑定非原始和非字符串可转换类型。尽管在很多情况下在语义上都可以,但是对于GET和HEAD请求来说并没有多大意义,因为根据HTTP规范,这些请求都是无主体的请求。

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

© www.soinside.com 2019 - 2024. All rights reserved.