将所有属性或仅将I';I’我要更新
本文关键字:我要 更新 属性 | 更新日期: 2023-09-27 18:20:24
我正在用最新的sdk、.NET Framework 4.5.1和C#开发一个ASP.NET Web Api。
我在ApiController
:上有这个放置方法
public void Put(HttpRequestMessage request, int userId, User user)
{
}
如果User
有很多属性,如姓名、生日、地址、国家/地区等。我只想更新他/她的地址。
我必须从客户端向Web Api发送什么?只有他的名字的用户实例?
这是一个JSON示例:{"UserAddress":"Ugly street, 1"}
。
但是,也许我不能这样做,因为Users
的一些属性不能为空,(比如他/她的年龄,因为它是int Age { get; set; }
。
我可以发送要在Url
中更新的所有属性,而不是放一个User
实例,但我认为这可能会一团糟。
PUT
的语义表示必须指定资源的完整当前状态。如果您不想这样做,您应该使用POST或PATCH来更新您的资源。
我会这样做:
public class AddressController : ApiController
{
[Route("users/userId/address")]
public void Put(int userId, Address address)
{
}
}
我认为最好的方法是从WebApi获取User
,更新其属性,并将其放入WebApi。
步骤:
- 从Web Api获取
User
- 使用新属性的值更新
User
- 把
User
放到Web Api上
这是更通用的解决方案。在这里,我们可以更改一个或多个属性,不需要为每个属性添加一个方法,也不需要有可为null的属性。