【问题标题】:Best practice for naming URLs of edit pages命名编辑页面 URL 的最佳实践
【发布时间】:2018-06-25 22:00:37
【问题描述】:

我有一个包含活动的网站,每个活动都有多个调查。

如果我要编辑广告系列,我的 URL 命名为

campaign/edit/1

如果我想在活动中编辑调查,我有一个名为

campaign/edit/1/survey/edit/3

我的页面将为 ID 为 1 的活动和 ID 为 3 的调查获取数据。

虽然这可行,但我想知道是否确实存在某种更适合此的约定,或者这样的 URL 是否可以?

【问题讨论】:

  • 我不会在 url 中使用 edit 关键字,因为它是动词。相反,我更喜欢这些网址 - [campaign/1] 和 [campaign/1/survey/3]

标签: url url-design


【解决方案1】:

虽然对于风险较低的小型网站执行此操作是完全可以接受的,但还有其他更安全的方法可以执行此操作。例如,请注意,如果您访问网络上的 Instagram 帖子,URL 是“https://www.instagram.com/p/BeB6HbqA8TEYRi7-I0X3neNZ2tw0irKoVdUCbg0”,其中 /p/ 后面的字符串是图像的 id。这是一个哈希而不是一个数字。他们本可以将 url 设为图像的编号 ID,但这可能会导致问题,您可以根据相对于其他图像的发布时间等来预测图像的 ID,从而暴露您不知道的后端的一部分通常要暴露。

在您的情况下,您将让用户能够将 URL 中的 ID 从 1 和 3 更改为其他数字,并且可能它们是数据库中的有效 ID,因此他们会提出一个他们可能不应该使用的表单可以访问。

因此,Web 框架可以让您指定您希望数据库对象生成 UUID(随机散列)并将其用作键(例如 Django's UUIDField)。然后,您可以在 URL 中使用 UUID,从而阻止任何人生成可能的 URL。

【讨论】:

    【解决方案2】:

    你正在做的很好。但是您也可以通过将 url 引导到不同的页面来使其更容易。 快乐编码!

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 2011-08-09
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2022-11-10
      • 2010-10-09
      • 2014-06-14
      • 1970-01-01
      相关资源
      最近更新 更多