【问题标题】:API Design: pass id or complete objectAPI 设计:传递 id 或完整对象
【发布时间】:2018-07-30 11:25:37
【问题描述】:

假设,有一个人和一个地址对象。该人没有对地址的引用,而只有其 ID。例如:

Person {
  id: PersonId,
  addressId: AddressId,
  name: String,
  ...
}

Address {
  id: AddressId,
  street: String,
  ....
} 

模型是旧的,无法更改。

现在你想为这个人设置一个地址,你会如何设计这个调用的 API。您只能选择两种可能性:

void setAddress(PersonId id, Address address)

void setAddress(Person person, Address address)

如您所见,唯一的区别是,一次只发送人员的 id,一次发送完整的人员对象。

你会选择哪一个?为什么?

PS:这个问题来自工作中的内部讨论,我只是对其他程序员/设计师如何看待这个问题感兴趣。

【问题讨论】:

    标签: api-design


    【解决方案1】:

    我会选择第一个,因此此 API 的调用者只需要提供最少的信息,API 实现会获取继续调用所需的所有信息(在您的示例中,从数据库或其他东西中获取人员)。 第二个对我来说似乎不合逻辑,因为如果您传递整个 person 对象,您还必须从数据源中获取 person(对象可能在调用期间被修改),因此您传递的信息比在这种情况下需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      相关资源
      最近更新 更多