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

如何根据某些表以合理的方式决定资源

阎功
2023-03-14

我需要知道如何决定什么是资源,什么是子资源。我只需要为一些表创建uri。假设我有一个student表和studentclass(它给出了学生注册的班级的名称,可能还有更多的详细信息)表(N:1)。

我将使学生成为主要资源,并设计如下uri

http://home/someapi/v1/student/1/

遵循rest方法构建uri

Qus 1:要访问studentclass,我必须使用下面显示的哪个uri

1.http://home/someapi/v1/studentclass?studentid=1 or
2.http://home/someapi/v1/student/1/studentclass

我必须把学生班视为一个单独的资源吗?

Qus 2:假设表之间存在N: N关系,那么uri的设计应该如何?

共有2个答案

司徒炎彬
2023-03-14

我认为学生班级(或简称为“班级”)应该是一种不同的资源,因为班级可以在学生之间共享。因此,这个Uri将满足您的需要:

/v1/学生类?

酆英达
2023-03-14

我建议处理两个资源:学生

您可以使用以下 URI 获取学生

http://home/someapi/v1/students/1

请注意这里的复数,如果您想了解为什么应该使用复数:http://blog.apigee.com/detail/restful_api_design_plural_nouns_and_concrete_names/,请阅读本文。

如果一名学生可以注册到一个,则它可能是该学生的属性,因此您可以返回以下JSON文档(例如):

{
  "student": {
    "id": 1,
    "firstName": "John",
    "lastName": "Doe",
    "class": {
      "id": 10,
      "name": "Room Y"
    }
  }
}

您可以获取具有以下 URI 的特定

http://home/someapi/v1/classes/10

您可以使用以下 URI 获取给定班级的所有学生:

http://home/someapi/v1/classes/10/students

现在,如果您在学生之间有N-N关系,它将改变我关于JSON中学生表示的第一个提议。实际上,class关系将成为class资源的集合,而不是学生的嵌入属性,您应该使用以下URI:

http://home/someapi/v1/students/1/classes

意思是“检索学生#1的所有课程”。

您可以公开班级学生资源。无需决定哪一个是主要的,因为它们描述了两种不同的东西。拥有 /students/classes 允许您创建学生班级,您可以链接它们等。

最后一点,建议使用查询参数(< code >?foo=bar)进行过滤。

 类似资料:
  • 假设我有一个班级: 我有另一个类,其中用户登录,并且根据他是管理员还是普通用户,用户可以访问有限的枚举列表。我知道我可以从类中获取所有枚举的完整列表,但是在枚举类不知道用户信息的情况下,通过某些标准过滤这些枚举的优雅方法是什么? 编辑:以下是它今天的样子: 我正在返回1000个事件的完整列表,而管理员应该只看到有限的数量。

  • 问题内容: 我有一个现有的Java / JSF网站,屏幕上的所有文本都是通过 来自属性文件的,该文本将从applicaltion.properties中提取。 对于这些的运行时可配置子集,我想从其他位置(通过Web服务进行CMS)中提取字符串。看一下ResourceBundle类,大概有一个基础设施,可以委派给父ResourceBundle。 我想要这样的东西 我已经尝试过了,parent是空的,

  • 因此,我正在使用很棒的MPAndroid图表库来制作一个简单的LineChart。我能够使用GitHub上的示例项目大量定制它。 问题是,当我将它移到我自己的代码中时,某些方法不再能够解决: 特别是mlineChart.setExtraOffsets()和mlineChart.setAutoScaleminMaxEnabled()。可能还有其他的,但这是我注意到的仅有的两个。 不过,其他一切都很好

  • 问题内容: 我有一个这样的表: 我正在尝试删除具有3个以上具有相同ID的名称的记录,但要删除所有记录。因此,我试图得到这样的东西: 我不了解如何编写此查询。我已经达到了保留一个记录但没有记录阈值的程度: 给我: 有什么建议?哦,对了,我不在乎合并时会保留哪些记录。 问题答案: 您可以使用CTE做到这一点

  • 请考虑CSV中的以下输入示例 输出应如下: 条件是:如果公司名称在输入中的不同记录中重复,则在输出 CSV 中应为空。 请让我知道这是否可以在 Mule 的数据编织组件中处理 下面是更新的代码

  • 有一个对象,其中用户以数组的形式存在,如何使用特定id更新用户,而不发送整个用户数组。 当同时更新不同用户的数据时,发送的数据被覆盖,但必须不被覆盖