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

如何构建REST资源层次结构?

柳英资
2023-03-14

我是服务器端webhtml" target="_blank">开发的新手,最近我读了很多关于实现RESTful API的文章。REST API的一个方面我仍然坚持是如何构建URI层次结构,该层次结构标识客户机可以与之交互的资源。具体地说,我一直在决定在资源由其他资源类型组成的情况下,层次结构有多详细,以及该做些什么。

这里有一个例子,希望能说明我的意思。假设我们有一个web服务,它允许用户从其他用户那里购买产品。所以在这个简单的例子中,有两个顶级资源用户和产品。下面是如何开始构建URI层次结构的,

对于用户:

/users
      /{id}
           /location
           /about
           /name
           /seller_rating
           /bought
           /sold
/products
         /{id}
              /name
              /category
              /description
              /keywords
              /buyer
              /seller

在这两种情况下,每个层次结构中的对象都引用另一个层次结构中对象的子集。例如,/users/{id}/buy是某个用户购买的产品的列表,它是/products的子集。此外,/products/{id}/seller引用销售特定产品的用户。

由于这些URI引用了其他对象或其他对象的子集,API是否应该支持以下内容:/users/{id}/bure/id/description/products/{id}/bure/location?因为如果支持这些类型的URI,那么有什么可以阻止类似/users/{id}/buy/{id}/buy/buy/{id}/seller/name或者类似的事情呢?此外,在这种情况下,您将如何处理路由,因为服务器中的路由器必须解释任意长度的URI?

共有1个答案

法池暝
2023-03-14

目标是构建方便的资源标识符,不要试图交叉引用所有东西。您不必在URL表示中重复数据库关系:)

/product/{id}/bury这样的链接不应该存在,因为已经存在该资源的标识符:/user/{id}

虽然使用/product/{id}/bures-list是可以的,因为购买者列表是product的属性,在其他上下文中不存在。

 类似资料:
  • null 每个表中的主键是数据库。它是一个内部ID,没有业务意义。使用它作为资源的默认URI是否正确? 每个对象都有自己的一组唯一键。例如,可以通过他的、或来标识。每个客户端只有这些密钥的子集。我应该为每个键定义一个子资源,还是提供一个将返回正确URI的查找服务? 我在问什么是真正的RESTful方式,什么是最佳实践。我还没找到合适的答案。

  • 我们正在创建一个REST API,目前我们有两种方法来定义资源。 基本上,我们有、和,其中一个有n个和一个有n个。 分层方法 该层次结构在URI中可见 要搜索所有图像,我们需要一个搜索资源 平进路 我们还需要考虑移动和修改。

  • 在Tableau中,可以构建层次结构以可视化数据。可以通过以下步骤在Tableau中创建它: 例如,考虑数据源,例如Sample-Superstore,以及它的维度和度量。 第1步: 首先转到工作表。然后, 选择一个维度,然后右键单击该维度以创建层次结构。 转到“层次结构(Hierarchy)”选项。 并且,单击下面屏幕截图中显示的“创建层次结构(Create Hierarchy)”选项。 第2步

  • 我有这样的层次结构: 因此,用户可以添加他的工作经验。此外,他还可以为特定的项目添加角色。 我想为用户id 1获取项目,但项目之间只有关系 获取用户 获得工作经验 获取角色 获取项目 因此,如果我有更多不同工作经验的角色,我就必须提出20个请求才能得到我的项目。这不是很有效率吗?我必须加载一些不必要的数据。。。 是否可以只创建endpoint:并按用户ID过滤它? 应该如何在API上管理它?对我来

  • 我想不出为继承层次结构创建视图方法。如果我像下面的代码一样创建类层次结构,那么我就不能从bview.set(...)中正确使用B类的方法和属性而不进行强制转换,因为BView是从AView继承的。和Set method signature接受A类型的变量,但在BView中我希望设置B类型的变量。我该如何解决我的问题? 谢谢你。:3

  • 零售商店的正确模式是什么?公司从商店销售产品。 这似乎违反了我对OOP所知的全部知识。通过层次结构向下传递数据的方法--在对象之间复制参数?我错过了什么?