编程

优秀的 URL 设计示例

947 2024-01-10 03:49:00

URL 无所不在。它们不只用输入道浏览器中。它们的使用方式有很多:

  • 作为脚本编写、抓取和其他编程数据检索的目标。
  • 作为参考,印刷在实体书的脚注和附录中。
  • 作为可通过物理介质访问的可操作触发器,例如可扫描的二维码或物联网设备按钮。
  • 还有更多!

当回顾这些年来我遇到的优秀的 URL 设计的例子时——当我看到它们时,我停顿了一下,心想“哇,它们真的太棒了!”——这些是我能想到的一些:

StackOverflow

StackOverflow 是我记忆中第一个遇到在计算机和人类需求之间取得良好平衡的 URL 的地方

它的 URL 像这样:

/questions/:id/:slug

:id 是问题的唯一标识符,不会透露任何内容。另一方面,:slug 是一种人类可读的问题转述,它可以让你在不去网站的情况下理解这个问题。

美妙之处在于 :slug 是 URL 中的一个可选参数。例如:

stackoverflow.com/questions/16245767

它没有告诉你所问的问题,但它是一个有效的 URL,允许服务器轻松地找到和提供独特的内容。

不过 StackOverflow 也支持 URL 的 :slug 部分,这可以让人通过 URL 快速理解其中内容。

stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript/

如前所述,:slug 是可选的。它不是服务器查找内容所必需的。事实上,随着时间的推移,它可以很容易地进行修改,而不会破坏 URL(我觉得这很优雅)。

诚然,它也可以被欺骗性地使用。例如,这与上面的 URL 相同,但它预示着完全不同的内容(不破坏链接):

stackoverflow.com/questions/16245767/how-to-bake-a-cake

不过,凡是都是权衡

Slack

我记得 Slack 曾发起过一场营销活动,向人们宣传该产品。他们在页面副本和 URL 中使用了营销活动的语言——“Slack is”,例如

  • slack.com/is
  • slack.com/is/team-communication
  • slack.com/is/everything-in-one-place
  • slack.com/is/wherever-you-are

我记得我对这种将讲故事活动的设计引入 URL 本身的努力非常感兴趣。

从那以后,我一直对那些试图形成自然语言句子的 URL 感到高兴——slack.com/is/team-communication ——而不是连接一系列分层关键字——slack.com/product/team-communication

说到用 URL 中的句子结构做有趣的事情…

Jessica Hische

Jessica Hische 将其网站放在 .is 域名下( Iceland 缩写)。

jessicahische.is

她在自己的网站上重复这种有趣的第三人称形式的“我是”。例如,单击主导航中的“关于”,它将带您进入:

jessicahische.is/anoversharer

很有趣! mydomain.com/about 也很清晰,不过但我喜欢用句子结构来描述“关于”这个词的奇思妙想。

她主要导航中的所有名词以及她的个人作品都遵循这种模式。就像这篇关于她一次节日烹饪包装演出的文章一样,网址是:

jessicahische.is/sofulloffancypopcorn

URLs as Product

我一直很喜欢那些 URL 很好地映射到域名语义的服务。例如,GitHub 的 URL 非常好地映射到 git 语义,比如 git 中的三点 diff 比较:

/:owner/:project/compare/ref1...ref2

例如

github.com/django/django/compare/4.2.7...main

对于技术产品,这种不一定需要通过用户界面就能导航到网站的能力相当的酷。

NPM 有点类似。想在 NPM 上查看 react-router 吗?你不必去 NPM 的主页点击或使用他们的搜索框。一旦你熟悉了他们的网站结构,你就知道你可以使用以下方法查找包:

/package/:package-name

例如

npmjs.com/package/react-router

想要查看包的特定版本?

/package/:package-name/v/:semver

比如

npmjs.com/package/react-router/v/5.3.4

当你使用特定的产品时,这些快捷方式非常有用。以 NPM 为例,你正在搜索 package.json,并且需要查找固定在特定版本的特定软件包的一些详细信息,您只需识别您想要的版本并在 URL 栏中键入详细信息,就可以导航到该软件包的 NPM 详细信息。

像 unpkg 这样的 NPM CDN 在遵循这些语义方面也做得很好。想要从已发布的包中获取文件吗?unpkg 的主页上写道:

unpkg.com/:package@:version/:file

在这种情况下,URL可以是产品本身,这使得其设计更加重要。

你呢?

以下是我多年来喜欢使用或看到的几个 URL 示例。我相信还有其人,但我很想知道你最喜欢的是什么?欢迎评论区留言!