JOINing资源的命名约定是什么?

时间:2014-03-09 12:05:26

标签: api rest

两种资源:

  • /user
  • /product

数据库表名称为user_product,它描述了用户和产品之间的关系。但是,端点POST /user/{id}/product/{id}表示更新product下的特定user,而非创建新关系。

因此我命名了资源POST /user/{id}/product/{id}/purchase,它定义了虚构的资源购买。毕竟,这就是表中数据所代表的含义。

我知道描述REST原则的原始dissertation几乎没有标准化命名。我想知道什么是行业建立的命名资源约定,用于标识两个资源之间的关系?

1 个答案:

答案 0 :(得分:0)

我猜你的购买存储在某个地方的数据库中,而实际的购买分配了自己的ID。为什么不直接使用该ID,如/purchases/{purchase-id}

如果一个用户购买了同一产品,则您的示例/user/{id}/product/{id}/purchase将无效。当然,除非资源信号“用户至少购买了一次产品X”或者返回该用户的所有产品X购买列表 - 这看起来更像是一个查询(可以分配自己的资源)。

  

因此我将资源命名为POST /user/{id}/product/{id}/purchase

请注意,您不在资源名称中包含方法名称(如POST)。为什么POST?是用于创建/修改关系 - 或者您是否意味着获取有关关系的一些信息?

  

我知道描述REST原则的原始论文几乎没有标准化命名。我想知道什么是行业建立的命名资源约定,用于标识两个资源之间的关系?

不,但是如果你想要一些提示,那么我在这里写了一篇关于这个主题的文章:http://soabits.blogspot.dk/2013/10/url-structures-and-hyper-media-for-web.html