Language agnostic 哪一个是更好的长期URL设计?

Language agnostic 哪一个是更好的长期URL设计?,language-agnostic,Language Agnostic,我喜欢Stack Overflow的URL—特别是表单: /问题/{Id}/{Title} /用户/{Id}/{Name} 这很好,因为随着问题标题的改变,搜索引擎将输入新的URL,但所有旧的URL仍然可以工作 杰夫在其中一个播客中提到,在宣布Flair功能时,他对自己在这些表单上做出的一些设计决定表示遗憾。具体而言,他为自己的伪动词所困扰,如: /用户/edit/{Id} /posts/{Id}/编辑 有点不清楚他最终喜欢哪种动词形式 您喜欢哪种模式(1或2)以及为什么?两者都不喜欢。在U

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

  • /问题/{Id}/{Title}
  • /用户/{Id}/{Name}
这很好,因为随着问题标题的改变,搜索引擎将输入新的URL,但所有旧的URL仍然可以工作

杰夫在其中一个播客中提到,在宣布Flair功能时,他对自己在这些表单上做出的一些设计决定表示遗憾。具体而言,他为自己的伪动词所困扰,如:

  • /用户/edit/{Id}
  • /posts/{Id}/编辑
  • 有点不清楚他最终喜欢哪种动词形式


    您喜欢哪种模式(1或2)以及为什么?两者都不喜欢。在URL中放置非英语数字ID很难对搜索引擎友好。你最好用破折号和所有小写字母替换空格。因此,对我来说,正确的形式是:

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

    我猜他更喜欢2号

    如果你把字符串放在第一位,这意味着它总是在那里。否则,您将得到外观难看的URL,如:

    /users//4534905
    
    无论您需要什么样的用户id,因此

    /user/4534905/
    
    最后看起来好多了。如果你想要假动词,你可以把它们加在末尾

    /user/4534905/edit
    
    /问题/我怎么烤苹果派 /问题/我如何烘焙苹果派2 /问题/我怎么烤苹果派-…我喜欢第二个:

    此外:

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

    /users/aiden
    ==所有调用aiden的用户
    /users/{id}/aiden
    ==一个名为aiden的用户
    /users/aiden?a=edit
    /users/aiden/edit
    ==编辑名为aiden的用户列表?
    /users/{id}/edit
    /users/{id}?a=edit
    更好

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

    我不介意亲自获取参数,并且认为/x/y/z应该引用一个可变资源,GET/POST/PUT应该对其进行操作


    我的2p我更喜欢模式2,原因很简单,URL读起来更好。比较:

  • “我想访问此ID的用户编辑资源”与
  • 我想使用此ID访问POSTS资源并对其进行编辑
  • 如果您忘记了每个URL的最后一部分,那么在第二个URL中您有一个很好的恢复计划

  • 嗨,获取/用户/编辑。。。什么?你想编辑什么?错误
  • 嗨,get/posts/id。。。哦,你想要这个身份证的帖子,嗯?酷

  • 我的2便士

    我也更喜欢第二个选项

    但我仍然相信,由此产生的URL是丑陋的,因为其中没有任何意义。 这就是为什么我倾向于将url创建分为两部分:

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

    两个URL都引用同一个文档,对于后者,只有id用于内部查询。因此,我可以提供一些有意义的URL,并且仍然避免过多的查询。

    这很好,直到您意识到您不能有两个标题相同的问题,并且您必须在varchar列(甚至索引)上进行查询,而不是在PKsUm上进行查询,这不是不友好的搜索引擎。你的方式会导致昂贵的SQL查询。对这个答案的否决是严厉的。他是对的,那些是更好的网址!然而,它们的实现是不切实际的,这就是为什么ids将继续被使用,并向用户公开。有鉴于此,这样做可能是最好的折衷办法。将这两种方法结合起来有很多可能性。然而,这一个简单地忽略了我不喜欢的ID的优点。为什么不把/questions/{title}作为一个具有该标题的所有问题的列表呢?然后链接到/questions/{id}/{title}这样你就知道你是怎么做到的了?你是说从斜杠“/”改为连字符“-”增加了意义/posts/42/再见和谢谢鱼看起来和posts/42/再见和谢谢鱼没什么不同。这些标志没有增加意义。但是后缀(再见,谢谢所有的修复)确实如此。需要注意的是,在其中使用另一个斜杠会产生误导,因为我们在这一点上没有嵌套关系或类似关系。我们所要做的就是给出一个提示,说明URL所指的内容。我承认这一点。但我们也可以挥动神秘之手,说帖子的标题是帖子本身的资源,因此/是有效的我非常不同意>^..^<问号、符号、查询中的每种特殊字符(除/ofc外)对我的世界来说都是一种犯罪。有人执意相信他们说我建议的格式是错误的是正确的,他否决了你。任何将PKeys放在URL中的人作为开发人员都会遇到严重的问题。我投票支持你。
    /posts/42 
    /posts/42-goodbye-and-thanks-for-all-the-fish