【发布时间】:2017-10-18 17:32:36
【问题描述】:
我有一个 API 可以更新已经存在的实体。该实体可以通过 API 所在的接口手动更新。
我的问题是,关于如何仅更新供应商可能通过实体上的 API 发送的某些字段,什么是好的设计模式或架构?我不想仅仅因为它们在发送到 API 时不知道这些值而用 NULL 或空字符串覆盖字段,但是数据库中的实体可能已经具有该字段的值。
这也应该考虑到供应商是否希望将字段重置为某种空字符串。
实体 API 模型
ID
Name
TwitterHandle
具有值的实体数据库模型
ID = 200
Name = Hello
TwitterHandle = @hello
实体请求模型发送到带有值的 API
ID = 200
Name = Hello2
此请求应仅将名称更新为 Hello2,但不理会 TwitterHandle。但是,在另一个请求中,他们可以重置 TwitterHandle,如果发送了一些东西(NULL,空字符串)
【问题讨论】:
-
我建议接受仅包含能够为特定调用编辑的属性的 ViewModel 或 DTO。这意味着您可能会有多个。不要通过您的 API 来回发送实体。
-
我有 100 个客户端使用这个 API,所以我不会为每个客户端创建一个模型
标签: .net api post asp.net-web-api asp.net-web-api2