c#中[FromBody]属性的作用是什么?

本文关键字:作用 是什么 属性 FromBody | 更新日期: 2023-09-27 18:04:08

是否存在[FromBody]属性的函数?我的意思是,当我用它的时候,例如:

public async Task SetUser([FromBody]User user)

public async Task SetUser(User user)

服务器得到相同的对象没有问题,所以,有必要设置它,或者我可以删除它没有担心?

Grettings !

c#中[FromBody]属性的作用是什么?

User是一个复杂类型,因此默认情况下服务器将尝试从请求体解析它。如果你有一个简单的类型——例如

public async Task SetUser(string userId)

服务器将尝试通过URL绑定解析该值。您可以通过指定

来覆盖该行为
public async Task SetUser([FromBody] string userId)

我通常把[FromBody]留在签名中,只是为了便于阅读。

参数可以通过两种方式传递给服务器——通过URI,或者作为请求体的一部分。

当数据在URI中传递时,它们成为查询字符串-例如http://server.com/something?userId=5。这将由带有int userId参数的action方法处理。

当数据在请求体中传递时,您无法在URI中看到它们-例如,它将是http://server.com/something。然后在请求体内部以名称-值对的形式传递参数。

然而,为了通过body传递任何东西,必须有body,而GET请求通常没有请求body(从技术上讲,它可以有,但我不确定它是否用于将参数传递给GET动作方法)。您通常希望在POST操作方法中使用FromBody属性来修饰参数。同样,您通常希望GET操作通过URI接收参数,这更符合GET方法的目的。

可以指定FromUriFromBody来控制行为。还有一个BindModel属性,可以让您定义自定义绑定。