哪个是更好的长期网址设计?

时间:2009-07-14 18:18:27

标签: language-agnostic

我喜欢Stack Overflow的URL - 特别是表单:

  • /问题/ {ID} / {标题}
  • /用户/ {ID} / {名称}

这很棒,因为随着问题标题的更改,搜索引擎会输入新网址,但所有旧网址仍然有用。

杰夫在其中一个播客中提到 - 在宣布Flair功能时 - 他对这些表格中的一些设计决定表示遗憾。具体来说,他对他的伪动词感到困扰,如:

  1. /用户/编辑/ {ID}
  2. /帖/ {ID} /编辑
  3. 有点不清楚这些动词形式中哪一个最终更喜欢。

    您更喜欢哪种模式(1或2)以及为什么?

6 个答案:

答案 0 :(得分:8)

我更喜欢模式2,原因很简单,网址读取效果更好。比较:

  1. “我想访问USERS EDIT资源,此ID”与
  2. 相同
  3. “我想访问POSTS资源,使用此ID并编辑它”
  4. 如果您忘记了每个网址的最后一部分,那么在第二个网址中您就有了一个不错的恢复计划。

    1. 嗨,获取/用户/编辑......什么?你想要编辑什么?错误!
    2. 嗨,get / posts / id ...哦,你想要这个ID的帖子嗯?凉。
    3. 我的2便士!

答案 1 :(得分:2)

我的猜测是他更喜欢#2。

如果你把字符串放在第一位就意味着它总是必须在那里。否则你会看到丑陋的网址:

/users//4534905

无论你需要什么用户的id,所以这个

/user/4534905/

看起来更好看。如果你想要fakie动词,你可以将它们添加到最后。

/user/4534905/edit

答案 2 :(得分:1)

都不是。在URL中放入非英文数字ID几乎不会对搜索引擎友好。您最好使用短划线和全部小写来替换标题。所以对我来说,正确的形式是:

/question/how-do-i-bake-an-apple-pie
/user/frank-krueger

答案 3 :(得分:1)

我喜欢2号:

还:

/questions/foo ==所有问题都叫“foo”
/questions/{id}/foo ==一个名为“foo”的问题

/users/aiden ==所有用户都称为aiden
/users/{id}/aiden ==一个叫做艾登的用户 /users/aiden?a=edit/users/aiden/edit ==编辑名为Aiden的用户列表?
/users/{id}/edit/users/{id}?a=edit更好

/rss/users/aiden ==用户的RSS更新名为aiden
/rss/users/{id} ==用户活动的RSS提要
/rss/users/{id}/aiden == Aiden个人资料的RSS Feed更改

我不介意个人认为GET参数,并认为/ x / y / z应该引用一个可变资源,而GET / POST / PUT应该对它起作用。

我的2p

答案 4 :(得分:1)

我也喜欢第二种选择。

但我仍然认为生成的网址很难看,因为那里没有任何意义。 这就是为什么我倾向于将网址创建分为两部分:

/posts/42 
/posts/42-goodbye-and-thanks-for-all-the-fish

两个URL都引用相同的文档,并且后者仅在内部查询中使用id。因此,我可以提供有意义的URL,但仍然不会使我的查询膨胀。

答案 5 :(得分:0)

/question/how-do-i-bake-an-apple-pie
/question/how-do-i-bake-an-apple-pie-2
/question/how-do-i-bake-an-apple-pie-...