当前位置: 首页 > 知识库问答 >
问题:

API URI设计嵌套与查询字符串

李睿
2023-03-14
//2 endpoints
/customers/1/orders
/orders/{id}/products //for n orders
//3 endpoints
/customers
/orders
/products

如果嵌套更好,以Microsoft为例,如果我想为客户1创建一个新订单,我应该发送到/customers/1/orders/orders,正文中包含customer_id还是同时支持这两个命令?

共有1个答案

彭存
2023-03-14

从REST API设计的角度来看,这两种方法都是可以的。您应该根据您的用例来设计它,并增加开发人员的体验:

  • 如果在客户上下文中创建订单更直观,请选择嵌套方法。
  • 如果创建订单并将客户id作为order对象的属性发送更直观,那么选择另一种方法。

您甚至可以同时提供这两种方法,因为API只是一个与服务通信的接口(就像GUI,但用于m2m目的)。

 类似资料:
  • 我的问题是关于在为API目的构建URL时嵌套资源的优势。请考虑以下两种访问员工资源的备选方案: 现在考虑开发一个通用库以从API访问REST资源的任务。如果所有路由都是平坦的,这样的REST包装库只需要知道要访问的资源的名称: 但是,如果我们要支持嵌套路由,这个包装器将需要知道关于嵌套了哪些模型以及在哪个其他资源下的额外信息,以便知道如何构建引用这样一个模型的URL。考虑到并非所有模型都嵌套在同一

  • 和相应的查询解析器 这里的主要想法只是有一个过滤器,可以看到什么食谱有一些成分,用户会通过应用程序通知。 我使用数据库中的所有食谱获得了“recipe”查询,但我需要一个获取这些食谱的查询,然后使用field comprient进行筛选,例如: 食谱-糖蛋糕,配料:糖、蜂蜜、四个… 配方-天鹅绒蛋糕,配料:糖、香草、... 并且用户通知Sugar,API应该返回这2个食谱,但是如果用户通知Suga

  • 我正试图用jooq编写这个查询 我尝试了几件事,但没有成功。到目前为止,我只得到 如何将num列添加到结果中?感谢您的帮助。

  • 我试图创建一个嵌套查询,它将过滤掉一些带有特定术语的文档。在本例中,我试图过滤掉在user.first中有匹配术语的文档。数据示例: 我的查询没有得到所需的结果,因为它返回给我所有未筛选的记录。我尝试使用: 我希望这里得到与过滤器不匹配的文档。在这种情况下,它应该只返回第二个文档。做这件事的正确方法是什么?

  • 问题内容: 我想使用ES进行图书搜索。因此,我决定将作者姓名和标题(作为嵌套文档)放入索引,如下所示: 我不明白的是:如何构造搜索查询,以便在搜索“一二”时仅找到第二本书,而在搜索“二三”时什么也找不到,而在搜索“一”时所有图书呢? 问题答案: 也许是这样的? 该查询基本上说一个文件必须有and 。您可以轻松地重新配置该查询。例如,如果您只想搜索作者,请删除嵌套部分。如果您想要另一本书,请更改嵌套

  • 我有一个如下所示的ElasticSearch查询: 和像这样的文件作对。 因此,我能够根据文档名称和搜索名称与我的查询的接近程度来检索文档。 要求是,文本搜索框应该检索与查询匹配的最接近的名称,但是,如果给定相对相似的名称,在过去的时间段内投诉数量超过10的文档在搜索结果中的显示应该高于那些少于10的文档。 因此,我需要传递一个时间段的关键字,例如“01/01/2001-31/12/2001”,如