工作中的同事创建了API端点,该端点在url中使用特定于语言的字符。这个api url看起来像
http://somedomain.com/someapi/somemethod/zażółć/gęślą/jaźń
这样做还是不好?
答案 0 :(得分:0)
从技术上讲,这不是有效的网址,但是网络浏览器和其他客户端会对其进行细致处理。字符所来自的脚本不是问题,而是结构字符,如" /?#"可能。当他们显示您正在粘贴的数据时,您必须考虑该做什么。进入你的网址。
HTTP URL是:
请参阅RFC 3986
每个人都做出的假设 - 相当合理,因为它是主要的做法 - 是路径,查询和哈希是文本。没有文字而是编码文本。因此,涉及一些字符编码。如果在结构字符之外需要%-encoding,浏览器将采用UTF-8。如果您不希望浏览器执行%-encoding,请使用您正在使用的字符编码自行执行有效的URL。
由于世界正在标准化UTF-8(如果适用),HTML DOM也具有encodeURIComponent
功能。在Web浏览器中使用JavaScript的客户端可能直接或通过某些库使用此功能。
我的浏览器创建的URL的UTF-8编码,%编码(以及然后是有线,ASCII编码)版本:
(您可以使用浏览器的开发工具[F12键,网络标签]或数据包嗅探器[例如,Wireshark或Fiddler]自行查看。您在网上看不到作为URL提供的内容。 )
您的服务器应用程序可能理解这很好。无论如何,这是客户端遵守的服务器规则。如果您的API使用UTF-8编码,%编码的网址,则只记录该文件。 (但是以一种不会让那些已经不知情的人混淆的方式来表达它。)