精细粒度与粗粒度REST API

时间:2016-02-12 14:44:58

标签: rest architecture

我正在开发一个用于管理用户的REST API。每个用户都有一个姓名和一个姓氏以及他自己的联系人列表(姓名,类型,价值)。我正在考虑两种方法来建模REST API,粗粒度方法:

  • GET / user / {id},用于获取用户详细信息及其联系人
  • POST / users,添加新用户及其联系人
  • PUT / users / {id},用于更新用户及其联系人

或细粒度的方法:

  • GET / user / {id},以获取用户详细信息
  • GET / user / {id} / contacts,以获取用户的联系人
  • POST / user,添加新用户
  • PUT / user / {id},用于更新用户
  • POST / user / {id} / contacts,添加新用户联系人
  • PUT / user / {id} / contact / {id},用于更新用户联系
  • DELETE / user / {id} / contact / {id},删除用户联系

当选择细粒度方法时,应选择粗粒度方法吗?

1 个答案:

答案 0 :(得分:3)

此决定取决于您的API将如何使用。如果此API的主要功能是跟踪用户的联系人,那么我认为采用细粒度方法是有意义的。

作为API的使用者,细粒度方法具有与粗粒度方法相同的功能,但也添加了更具体的端点。以这种方式考虑,作为后端的开发人员,您知道联系人嵌套在用户对象中,但API的使用者不知道这一点,他们也不需要知道这一点。他们只知道用户与其联系人之间存在某种关系。

此外,细粒度的方法将使您的后端代码非常有条理。您将为API提供的每个端点提供特定的方法,因此代码将更易于阅读和理解。您还可以获得更细粒度和干净的错误处理。