3

我真的很难使用 RESTful 范例 + 嵌套 url。我问了一个问题,让我知道了我现在所处的位置。我的领域大致是这样的:有学校,有学校的课程,有学校的老师。现在,学校、课程和教师不是“嵌套”实体,因为您可以使用一个 ID 来引用它们中的任何一个。该网站是每个学校的“微型网站”的集合,展示了每个学校的课程和教师。课程或教师只能存在于一所学校。

假设我们有一个类似 /schools/1/courses/10 的网址。学校 1 的课程 10。这很好用。假设用户用手将 10 更改为 11,这恰好存在,但是是学校 2 的课程。现在这会导致一团糟,我的网站仍然“认为”用户在学校 1,但将课程 3 显示为它。

我是否应该将详细操作参数化为所要求的 ID 和它所涉及的“父母”实体(在本例中为学校)?不仅通过 id 还通过学校限制从存储库中获取?

或者有没有更好的方法来做到这一点?

4

3 回答 3

1

我的想法是这样的;即使您的服务中可能有课程 11,但在 URI /schools/1/courses/11 中不存在资源。由于此 URI 上没有资源,我将返回一个 HTTP 404 响应来响应对 URI 的请求。

您可以改进服务的一种方法是将整数 ID 值替换为实体的名称(这将要求名称是唯一的)。这将使您的 URI 更加用户友好。一个例子是 /schools/Hogwarts/courses/Potions。

为了进一步改进您的服务,您需要为用户提供一种在服务中导航到所有可用资源的方法。例如,您可能希望允许他们获取某个学校提供的所有课程的列表。为此,您需要在 /schools/Hogwarts/courses/ 公开一个资源,其返回类型将是学校提供的所有课程的列表。此列表的表示形式可以是 XML 文档,如以下片段:

<courses>
    <course uri="/schools/hogwarts/courses/defense+against+the+dark+arts">Defense against the dark arts</course>
    <course uri="/schools/hogwarts/courses/potions">Potions</course>
</courses>
于 2011-02-03T17:44:09.387 回答
1

我是否应该将详细操作参数化为所要求的 ID 和它所涉及的“父母”实体(在本例中为学校)?不仅通过 id 还通过学校限制从存储库中获取?

是的。

Or is there any better way to do this?

你上面描述的没有错。

于 2011-02-09T15:18:24.947 回答
-1

您可以使用一条包罗万象的路线,然后自己解析 url 元素。

于 2011-06-19T21:49:21.490 回答