我真的对RESTful范式+嵌套的urls很不满意。我问了一个问题,把我带到了现在的here。我的领域大致是这样的:有学校,学校的课程和学校的教师。现在学校,课程和教师不是“嵌套”的实体,因为你可以用一个Id来引用它们中的任何一个。该网站是每个学校的“微网站”的集合,显示每个学校的课程和教师。一门课程或教师只能存在于一所学校。
假设我们有一个url,就像/校/1/课程/10。学校1的课程10。这很好用。假设用户手动将10更改为11,它碰巧存在,但它是学校2的课程。现在,这导致了混乱,我的网站仍然“认为”用户在学校1,但显示课程3作为其中的一部分。
我是否应该将详细操作同时参数化到被请求的Id和它所涉及的“家长”实体(在本例中是学校)?从存储库中获取不仅要按id,还要有学校的限制?
或者有没有更好的方法来做到这一点?
发布于 2011-02-04 01:44:09
我的想法是这样的:即使您的服务中可能有一门课程11,但是在URI /schools/1/courses/11处没有资源。由于此URI处没有资源,因此我将对URI的请求返回一个HTTP 404响应。
改进服务的一种方法是将整型ID值替换为实体的名称(这要求名称是唯一的)。这将使您的URI对用户更加友好。一个例子是/schools/Hogwarts/courses/Potions。
为了进一步改进您的服务,您需要为用户提供一种通过服务导航到所有可用的不同资源的方法。例如,您可能希望允许他们获得某个学校提供的所有课程的列表。要做到这一点,您需要公开一个资源,该资源的返回类型是学校提供的所有课程的列表。此列表的表示形式可以是如下代码片段所示的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-09 23:18:25
我是否应该将详细操作设置为所请求的Id和所涉及的“家长”实体(本例中为学校)的参数?从存储库中获取不仅要按id,还要有学校的限制?
是。
Or is there any better way to do this?你上面描述的并没有什么问题。
发布于 2011-06-20 05:49:21
您可以使用一个通用的路由,然后自己解析url元素。
https://stackoverflow.com/questions/1833034
复制相似问题