两种资源:
/user
/product
数据库表名称为user_product
,它描述了用户和产品之间的关系。但是,端点POST /user/{id}/product/{id}
表示更新product
下的特定user
,而非创建新关系。
因此我命名了资源POST /user/{id}/product/{id}/purchase
,它定义了虚构的资源购买。毕竟,这就是表中数据所代表的含义。
我知道描述REST原则的原始dissertation几乎没有标准化命名。我想知道什么是行业建立的命名资源约定,用于标识两个资源之间的关系?
答案 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