L L*_*eon 2 c# asp.net-web-api
是否有[FromBody]属性的功能?我的意思是,当我以它为例时:
public async Task SetUser([FromBody]User user)
当我使用时:
public async Task SetUser(User user)
服务器获得相同的对象没有问题,所以,它是必要的设置,或者我可以毫无后顾之忧地删除它?
素不相识的!
User是复杂类型,因此默认情况下,服务器将尝试从请求正文中解析它.如果你有一个简单的类型 - 例如
public async Task SetUser(string userId)
Run Code Online (Sandbox Code Playgroud)
服务器将尝试通过URL绑定来解析该值.您可以通过指定来覆盖该行为
public async Task SetUser([FromBody] string userId)
Run Code Online (Sandbox Code Playgroud)
[FromBody]为了便于阅读,我通常只留下签名.
有两种方法可以将参数传递给服务器 - 通过 URI,或作为请求正文的一部分。
当数据在 URI 中传递时,它们成为查询字符串 - 例如http://server.com/something?userId=5。这将由带有int userId参数的 action 方法处理。
当数据在请求正文中传递时,您将无法在 URI 中看到它们 -例如,它是http://server.com/something。然后参数作为名称-值对在请求正文中传递。
但是,为了通过body传递任何东西,必须有body,而GET请求通常没有请求正文(技术上可以有它,但我不确定它是否用于将参数传递给GET操作方法)。您通常希望参数FromBody在 POST 操作方法中使用该属性进行修饰。同样,您通常希望 GET 操作通过 URI 接收参数,这更符合 GET 方法的目的。
您可以指定FromUri或FromBody来控制行为。还有一个BindModel属性可以让您定义自定义绑定。
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |