0

手动网络路由的目的是什么?为什么不是每个人都自动在 URL 和模块/方法/函数名称之间进行映射?

我认为您可以从全自动映射开始,然后您可以使用 Apache mod_rewrite 或 mod_redirect 或其他任何东西,如果您想以一种会更改 URL 的方式进行重构,而不会破坏现有的 URL。

4

4 回答 4

5

使用手动路由而不是自动路由有两个主要原因。

  1. 手动路由允许您按照应使用的方式使用 REST。这意味着同一个 URL 可以访问 4 个不同的操作,由使用的 HTTP 方法(POST、GET、PUT、DELETE)区分。使用自动路由,您将公开底层函数的方法名称,因此,您将有 4 个不同的 URL。

  2. 手动路由还允许您生成对搜索引擎更友好的 URL。这通常使用 slugify 方法来实现,但是手动路由允许您忽略这些额外信息,而只需专注于 URL 的 ID 部分即可正确地将您路由到特定资源。

另一个纯粹是装饰性的原因是 URL 看起来更好。这有关系吗?有些人可能会这么认为。

于 2011-09-02T12:36:03.927 回答
2

您可以提出的一个论点是,您的应用程序呈现的 URL 命名空间是其用户界面的一部分,因此管理它的路由规则属于应用程序源代码的其余部分。此外,在 Ruby on Rails 的情况下,路由配置都只是 Ruby 代码,因此如果需要,您可以在其中拥有比 Apache 模块单独允许的更复杂的业务逻辑。

于 2011-09-02T09:18:26.747 回答
1

对于 RESTful HTTP,URL 很重要。因此,如果您只使用自动 URL,您将有很多不太好的 URL。例如,您可以通过 GET 和 POST 之间的差异在 Play 中为 Users.edit() 和 User.save() 使用相同的 URL /udpateUsers。此外,您可以支持像 /users/show/1 这样的数据绑定来显示 ID 为 1 的用户。但是 Play 中的默认设置是自动执行。

于 2011-09-02T11:39:09.083 回答
0

什么是通用网络意义上的“模块”?

Apache 的默认设置是映射到文件系统,因为这是所有运行 Apache 的系统所拥有的唯一功能之一。

于 2011-09-02T21:21:03.757 回答