恢复URL

cor*_*ore 7 rest http query-string

在这里工作时,我们有一个框,为业务合作伙伴提供XML源.通过指定查询字符串参数和值来自定义我们的订阅源请求.其中一些参数是必需的,但许多参数不是.

例如,我们要求所有请求指定GUID以标识合作伙伴,并且请求可以是"获取最新"或"搜索"操作:

对于搜索:http://services.null.ext/?id = [GUID]&q = [搜索关键字]
类别中的最新数据:http://services.null.ext/?id = [GUID]&category = [ ID]

为这些参数构建RESTful URL方案很简单:

搜索:http://services.null.ext/ [GUID]/search/[Keywords]
最新:http://services.null.ext/ [GUID]/latest/category/[ID]

但是我们应该如何处理我们拥有的十几个可选参数呢?其中许多是相互排斥的,并且许多组合是必需的.很快,可能的路径数量变得非常复杂.

有关如何将具有复杂查询字符串的URL映射到友好/ REST/ful /路径的一些推荐做法?

(我对约定,方案,模式等感兴趣.不是在Web服务器或框架中实现URL重写的特定技术.)

Pet*_*ete 4

您应该在查询字符串中保留可选的查询参数。REST 中没有“规则”表明不能有查询字符串。事实上,情况恰恰相反。查询字符串应用于更改您传输回客户端的表示的视图。

对于 URL 路径组件,请坚持使用“具有可表示状态的实体”。类别看起来不错,但是您通过 XML 提供的到底是什么?帖子?目录项目?部分?

我认为更好的 REST 分类法如下所示(假设 XML feed 的内容是一篇“文章”):

如果您在构建 REST 结构时没有考虑您所代表的实体,那么您就没有在进行 REST。你正在做别的事情。

请查看这篇有关 REST 最佳实践的文章。它很旧,但可能会有所帮助。