跳转到内容

XRX/URL 重写

来自维基教科书,开放的书籍,用于开放的世界
< XRX

您希望系统中的 URL/URI 反映服务的逻辑结构,而不是数据库的集合结构。

方法 1:使用 Jetty 重写处理程序

[编辑 | 编辑源代码]

使用 Jetty 重写处理程序,该处理程序可以与 Jetty 服务器一起安装。RewriteHandler 使用 XML 配置文件来存储 URI 的重写模式。该文件可以包含正则表达式,允许单个规则用于重写大量 URI。

方法 2:使用 Atom 接口

[编辑 | 编辑源代码]

eXist 原生 XML 数据库有一个 Atom 发布协议 接口。您可以使用它为现有 XQuery 创建新的 URL 接口。

假设您使用 XQuery 来执行过去 N 天内在项目 P 中发生更改的所有术语的报告。使用 eXist XQuery,URL 可能是

http://example.com/exist/rest/db/apps/glossary/views/terms-changed.xq?days=N&project=P/


URL 重写可能是

http://example.com/terms/new/days=N/project=P/

这使得 URL 成为更稳定的应用程序编程接口,并允许您将 XQuery 移动到 eXist 数据库中的另一个位置,并更改参数名称,而不会影响您的使用者、他们的书签或通过 REST 接口访问此数据的其他系统。

使用 Apache Mod Rewrite 的示例

[编辑 | 编辑源代码]

实现 URL 重写的最流行方法是使用 Apache Web 服务器作为 Web 应用程序的前端。这允许您将“动态”URL 转换为看起来是“静态”的 URL,在 URL 字符串中没有问号或符号,参数被传递就像它们是文件夹而不是键值对一样。

以下是将添加到 Apache 配置文件中的代码

Options +FollowSymLinks
RewriteEngine on
RewriteRule terms/new/days=(.*)/project=(.*)/ db/apps/glossary/views/terms-changed.xq?days=$1&project=$2

一个 XForms 应用程序,用于管理 Jetty 重写 URL。

参考文献

[编辑 | 编辑源代码]

返回:内容路由

华夏公益教科书