Web服务 – RESTFful 面向资源的设计

Web服务 – RESTFful 面向资源的设计,第1张

概述假设我有一个由学校,学生和班级组成的三级层次结构. 如果我将学生作为资源公开,我的问题是我是否应该总是将父母“学校”和孩子“班级”与该学生一起返回,或者是否应该有用户包括的parm来表明这一点.也许像& deep = True? 或者另一方面,如果用户得到学生,并且他想要学校,他必须对学校资源进行GET,同样如果他想要学生正在学习的所有课程,他必须做GET关于类资源? 我试图让设计对未知的未来用户 假设我有一个由学校,学生和班级组成的三级层次结构.

如果我将学生作为资源公开,我的问题是我是否应该总是将父母“学校”和孩子“班级”与该学生一起返回,或者是否应该有用户包括的parm来表明这一点.也许像& deep = True?

或者另一方面,如果用户得到学生,并且他想要学校,他必须对学校资源进行GET,同样如果他想要学生正在学习的所有课程,他必须做GET关于类资源?

我试图让设计对未知的未来用户保持开放,而不仅仅是针对我们当前的需求进行编码.

谢谢,

尼尔沃尔特斯

解决方法 我认为你应该避免将课程视为学生的子资源或属性.学术课程不仅仅是学生日程安排的时间段;它有一个教师,一个教学大纲等,所有这些都可能需要在某个时刻进行编码.

在我看来,以下关系成立:

>学校有零个或多个学生
>学校有零个或多个班级
>学生有零个或多个课程
>班级有零个或多个学生

(如果您的要求包含此类信息,您也可以通过教师/教师轻松扩展这些内容.)

此外,上述每种资源类型除了它们之间的简单链接之外还具有任意数量的属性.

鉴于此,我认为您需要一个类似于以下内容的URL结构:

> http://example.com/lms/schools =>学校名单> http://example.com/lms/schools/{school} =>关于一所学校的信息> http://example.com/lms/schools/{school}/students =>学生名单> http://example.com/lms/schools/{school}/students/{student} =>一个学生的信息> http://example.com/lms/schools/{school}/students/{student}/courses =>学生注册的课程列表(作为链接,而非完整资源)> http://example.com/lms/schools/{school}/courses =>课程清单> http://example.com/lms/schools/{school}/courses/{course} =>一门课程的信息> http://example.com/lms/schools/{school}/courses/{course}/students =>在课程中注册的学生名单(作为链接,而非完整资源)

总结

以上是内存溢出为你收集整理的Web服务 – RESTFful /面向资源的设计全部内容,希望文章能够帮你解决Web服务 – RESTFful /面向资源的设计所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1071461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存