命名编辑页面 URL 的最佳实践
Best practice for naming URLs of edit pages
我有一个网站,其中包含一个活动,每个活动都有多个调查。
如果我要编辑广告系列,我会URL 命名
campaign/edit/1
如果我想编辑活动中的调查,我有一个 URL 名为
campaign/edit/1/survey/edit/3
我的页面将获取 ID 为 1 的活动和 ID 为 3 的调查的数据。
虽然这行得通,但我想知道是否确实存在某种更适合此的约定,或者像这样的 URL 是否可以?
你做的很好。但是您也可以通过将 URL 引导到不同的页面来使其更容易。
编码愉快!
虽然对于风险较低的小型网站执行此操作是完全可以接受的,但还有其他更安全的方法来执行此操作。例如,请注意如果您在网络上访问 instagram post,URL 是“https://www.instagram.com/p/BeB6HbqA8TEYRi7-I0X3neNZ2tw0irKoVdUCbg0”,其中 /p/ 之后的字符串是图像的 ID。这是一个散列而不是一个数字。他们本可以将 url 作为图像的编号 ID,但这可能会导致问题,您可以根据图像相对于其他图像的 posted 时间等来预测图像的 ID,因此公开您通常不想公开的后端部分。
在您的情况下,您可以让用户能够将 URL 中的 ID 从 1 和 3 更改为其他数字,并且它们可能是数据库中的有效 ID,因此他们会显示一个表单他们可能不应该能够访问。
因此,Web 框架可以让您指定希望数据库对象生成 UUID(随机哈希)并将其用作密钥(例如 Django's UUIDField)。然后,您可以在 URL 中使用 UUID,从而阻止任何人生成可能的 URL.
我有一个网站,其中包含一个活动,每个活动都有多个调查。
如果我要编辑广告系列,我会URL 命名
campaign/edit/1
如果我想编辑活动中的调查,我有一个 URL 名为
campaign/edit/1/survey/edit/3
我的页面将获取 ID 为 1 的活动和 ID 为 3 的调查的数据。
虽然这行得通,但我想知道是否确实存在某种更适合此的约定,或者像这样的 URL 是否可以?
你做的很好。但是您也可以通过将 URL 引导到不同的页面来使其更容易。 编码愉快!
虽然对于风险较低的小型网站执行此操作是完全可以接受的,但还有其他更安全的方法来执行此操作。例如,请注意如果您在网络上访问 instagram post,URL 是“https://www.instagram.com/p/BeB6HbqA8TEYRi7-I0X3neNZ2tw0irKoVdUCbg0”,其中 /p/ 之后的字符串是图像的 ID。这是一个散列而不是一个数字。他们本可以将 url 作为图像的编号 ID,但这可能会导致问题,您可以根据图像相对于其他图像的 posted 时间等来预测图像的 ID,因此公开您通常不想公开的后端部分。
在您的情况下,您可以让用户能够将 URL 中的 ID 从 1 和 3 更改为其他数字,并且它们可能是数据库中的有效 ID,因此他们会显示一个表单他们可能不应该能够访问。
因此,Web 框架可以让您指定希望数据库对象生成 UUID(随机哈希)并将其用作密钥(例如 Django's UUIDField)。然后,您可以在 URL 中使用 UUID,从而阻止任何人生成可能的 URL.