首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC:当实体不是真正嵌套的时候,使用嵌套urls的RESTful路由

MVC:当实体不是真正嵌套的时候,使用嵌套urls的RESTful路由
EN

Stack Overflow用户
提问于 2009-12-02 21:51:59
回答 3查看 609关注 0票数 3

我真的对RESTful范式+嵌套的urls很不满意。我问了一个问题,把我带到了现在的here。我的领域大致是这样的:有学校,学校的课程和学校的教师。现在学校,课程和教师不是“嵌套”的实体,因为你可以用一个Id来引用它们中的任何一个。该网站是每个学校的“微网站”的集合,显示每个学校的课程和教师。一门课程或教师只能存在于一所学校。

假设我们有一个url,就像/校/1/课程/10。学校1的课程10。这很好用。假设用户手动将10更改为11,它碰巧存在,但它是学校2的课程。现在,这导致了混乱,我的网站仍然“认为”用户在学校1,但显示课程3作为其中的一部分。

我是否应该将详细操作同时参数化到被请求的Id和它所涉及的“家长”实体(在本例中是学校)?从存储库中获取不仅要按id,还要有学校的限制?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-04 01:44:09

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

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

为了进一步改进您的服务,您需要为用户提供一种通过服务导航到所有可用的不同资源的方法。例如,您可能希望允许他们获得某个学校提供的所有课程的列表。要做到这一点,您需要公开一个资源,该资源的返回类型是学校提供的所有课程的列表。此列表的表示形式可以是如下代码片段所示的XML文档:

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2011-02-09 23:18:25

我是否应该将详细操作设置为所请求的Id和所涉及的“家长”实体(本例中为学校)的参数?从存储库中获取不仅要按id,还要有学校的限制?

是。

代码语言:javascript
复制
Or is there any better way to do this?

你上面描述的并没有什么问题。

票数 1
EN

Stack Overflow用户

发布于 2011-06-20 05:49:21

您可以使用一个通用的路由,然后自己解析url元素。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1833034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档