对于 REST API,URL 是否不区分大小写?

Shi*_*z.M 6 rest w3c api-design amazon-web-services web

我正在阅读W3C URL 规范,发现没有明确提及这一点。

实验

所以我尝试的curl

www.google.com

进而

www.GOOGLE.com

这些返回了相同的文档。所以我想也许谷歌拥有其域名的所有变体,所以我尝试了其他网站,但得到了不同的结果。

所以我在 URL 规范上混合了大小写,它似乎允许混合大小写。

将其应用于 REST API 设计

因此,当将此应用于 REST API 设计时,有时我们会使用标识符的概念从服务器返回特定资源。例如

在 中https://localhost:8080/contacts/MYSELFMYSELF将是典型的标识符

根据以前的经验,情况MYSELF应该不重要。但是如果我想对标识符进行严格验证怎么办?

当然,您可以违反规范并在应用程序中执行此操作;但在这种情况下,正确的做法是什么?

那么回到主题。URL 是否不区分大小写?

uno*_*nor 9

通用 URI 语法

\n

在通用 URI 语法中(由RFC 3986定义,目前是URI 的互联网标准),仅两个组件不区分大小写:

\n
    \n
  • 方案

    \n
    \n

    [\xe2\x80\xa6] 方案不区分大小写 [\xe2\x80\xa6]

    \n
    \n
  • \n
  • 主持人

    \n
    \n

    主机子组件不区分大小写。

    \n
    \n
  • \n
\n

百分比编码三元组中的字母(即a- fA- F)也不区分大小写。

\n

其他一切都区分大小写。

\n

但是,URI 方案可以为其 URI 覆盖此设置(请参阅大小写标准化)。

\n

HTTP(S) URI

\n

对于 HTTP(S) URI,规范不会\xe2\x80\x99 使任何其他组件不区分大小写(它重申方案和主机不区分大小写)。

\n

这意味着以下 HTTP URI 是等效的

\n
http://example.com/foo\nHTTP://example.com/foo\nhttp://EXAMPLE.com/foo\nhttp://example.COM/foo\nHTTP://EXAMPLE.COM/foo\nhtTp://exAMPlE.cOm/foo\n
Run Code Online (Sandbox Code Playgroud)\n

(最佳实践是将方案和主机标准化为小写。)

\n

而这些并不等同

\n
http://example.com/foo?bar#baz\nhttp://example.com/fOo?bar#baz\nhttp://example.com/foo?bAr#baz\nhttp://example.com/foo?bar#bAz\nhttp://example.com/FOO?BAR#BAZ\n
Run Code Online (Sandbox Code Playgroud)\n