Api 加入资源的命名约定是什么?

Api 加入资源的命名约定是什么?,api,rest,Api,Rest,两项资源: /使用者 /产品 数据库表名为user\u product,它描述了用户和产品之间的关系。然而,端点POST/user/{id}/product/{id}将指示更新用户下的特定产品,而不是创建新关系 因此,我将资源命名为POST/user/{id}/product/{id}/purchase,它定义了虚构的资源购买。毕竟,这就是表中的数据所表示的 我知道最初描述REST的原则对标准化命名没有什么帮助。我想知道,对于标识两个资源之间关系的命名资源,行业惯例是什么?我猜您的购买存储在某个

两项资源:

/使用者 /产品 数据库表名为user\u product,它描述了用户和产品之间的关系。然而,端点POST/user/{id}/product/{id}将指示更新用户下的特定产品,而不是创建新关系

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


我知道最初描述REST的原则对标准化命名没有什么帮助。我想知道,对于标识两个资源之间关系的命名资源,行业惯例是什么?

我猜您的购买存储在某个数据库中,实际购买分配了自己的ID。为什么不直接使用该ID作为/purchases/{purchaseID}

如果一个用户多次购买同一产品,那么示例/user/{id}/product/{id}/purchase将不起作用。当然,除非资源发出信号表示用户至少购买了一次产品X,或者返回该用户购买的所有产品X的列表——这看起来更像是一个可以分配自己资源的查询

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

请注意,在资源名称中不包括类似POST的方法名称。为什么要发帖子?它是用来创建/修改关系的,还是你的意思是获取有关关系的一些信息

我知道描述REST原则的原始论文对标准化命名几乎没有帮助。我想知道,对于标识两个资源之间关系的命名资源,业界有哪些惯例


不,但是如果你想得到一些提示,那么我在这里写了一篇关于这个主题的文章:

考虑将/purchases/{userId}/{productId}作为另一个选项。我认为最好将关系转换为实体,这样你就可以按照Dai的建议使用自己的id而不是复合id公开购买资源,或者根本不在端点中公开关系,您使用第一个url示例更新用户下的产品集合,反之亦然。我不理解@Dai建议的有效性。这造成了歧义。/purchases/{X}指的是什么?{购买}还是{用户}?另外,这需要用户记住参数的顺序:很容易意外地将其误认为/purchases/{productId}/{userId}。但是,我可以将资源/用户命名为产品。这将至少解决这些问题中的最后一个问题。我对此考虑得更多一些。。它似乎不起作用。如果/user_product/{id}引用了一个特定的关系,那么如何获取所有用户产品?它会是/user/{id}/user_产品吗?@Dai API应该是自文档的/有些东西/{id1}/{id2}最好是不好的做法,url肯定不是restfull。