这一切可能都碰到了新事物,但是我正在努力设计一个完全RESTful的网站。我了解将RESTful设计应用于用户,照片,博客帖子等内容,因为我认为它们就像“对象”。
但是,关于“关于我们”页面呢。那是什么资源?从RESTful的意义上来说,它甚至是一种资源吗?另外,说我去URL“ http://www.example.com/”,我要什么资源?索引资源?
这一切可能都碰到了新事物,但是我正在努力设计一个完全RESTful的网站。我了解将RESTful设计应用于用户,照片,博客帖子等内容,因为我认为它们就像“对象”。
但是,关于“关于我们”页面呢。那是什么资源?从RESTful的意义上来说,它甚至是一种资源吗?另外,说我去URL“ http://www.example.com/”,我要什么资源?索引资源?
Answers:
我看到的最常见的RESTful网站资源模式是将视图添加到URI:
/ resourcetype / 标识符 [/ view ] [/ page] [?filterparams]
如果没有视图,则只需提供默认视图即可。在您的情况下:
example.com
返回顶级资源(您的网站)的默认视图。aboutus
可以是顶级CMS范围内资源的命名标识符。*话虽这么说,有时最好稍微捏一些,以获得更好的语义。例如,StackOverflow使用RESTful / questions / [id]来提问,但是Ask Question页面是/ questions / ask,它不是非常RESTful(ask
不是questions
资源),但是使用凡人是很有意义的。
*在顶层的CMS中,资源类型经常(但并非总是)被删除,因为它是冗余的。
请记住,RESTful设计本身旨在提供一个标准,使Web可以统一编程。将整个面向人类的网站引入纯REST语义并不总是合适或有用。
当您拥有资源时,考虑它们的表示形式将很有用。考虑REST的其他设计原则(例如无状态)以及它们如何影响网站的性能和可用性也很重要。但是请记住,REST是一种工具,而不是目标。这是手段,而不是目的。
在了解RESTful语义和用途之后,在有用的地方使用RESTful语义,如果您的网站不是完全RESTful的,请不要费劲。无论如何,对于任何非平凡的站点来说几乎都是不可能的。
TL; DR:REST是一种工具。在有用的时间和位置使用它,但不受其约束。
但是,“关于我们”页面怎么样??那是什么资源?
复杂。具有组件,片段或结构的资源没有错。
资源不是“关系数据库行”或其他原子事物。他们是资源。
面向文档的数据库可以更优雅地处理此问题,因为资源可以更大,更结构化。
从RESTful的意义上来说,它甚至是一种资源吗?
是。
另外,说我去URL“ http://www.example.com/”,我要什么资源?
没有。
您正在请求“ aboutus”资源。资源可能是单例(但很奇怪)。没有ID而不是“列表”。
http://www.example.com/aboutus/?format=xml
返回包含很多部分的复杂XML文档。没有错。
索引资源?
在“ RESTful”意义上没有什么意义。“索引”页面适用于人们。使用RESTful API的应用程序旨在请求特定种类的资源。