将所有属性或仅将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实例,但我认为这可能会一团糟。

将所有属性或仅将I';I’我要更新

PUT的语义表示必须指定资源的完整当前状态。如果您不想这样做,您应该使用POST或PATCH来更新您的资源。

我会这样做:

public class AddressController : ApiController
{
    [Route("users/userId/address")]
    public void Put(int userId, Address address)
    {
    }
}

我认为最好的方法是从WebApi获取User,更新其属性,并将其放入WebApi。

步骤:

  1. 从Web Api获取User
  2. 使用新属性的值更新User
  3. User放到Web Api上

这是更通用的解决方案。在这里,我们可以更改一个或多个属性,不需要为每个属性添加一个方法,也不需要有可为null的属性。