Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http //或/-/是有效的URL组件吗?_Http_Url - Fatal编程技术网

Http //或/-/是有效的URL组件吗?

Http //或/-/是有效的URL组件吗?,http,url,Http,Url,背景:我正在创建一个分层的地理目录。我正在使用的地理数据库有一些字段,我可以创建如下URL: /国际标准化组织国家/第一行政部门/第二行政部门/地名/邮政编码/ ISO_国家/地区、地名和zipcode都保证有数据。但是第一和第二行政部门可能有数据,也可能没有数据 在美国,我有一个/US/纽约/拿骚县/Hicksville/51212/ 但在南非我有/ZA/[blank]/[blank]/Pretoria/0030/ 如果我使用(丑陋)/ZA///Pretoria/0030/这是一个有效的URL

背景:我正在创建一个分层的地理目录。我正在使用的地理数据库有一些字段,我可以创建如下URL: /国际标准化组织国家/第一行政部门/第二行政部门/地名/邮政编码/

ISO_国家/地区、地名和zipcode都保证有数据。但是第一和第二行政部门可能有数据,也可能没有数据

在美国,我有一个/US/纽约/拿骚县/Hicksville/51212/ 但在南非我有/ZA/[blank]/[blank]/Pretoria/0030/

如果我使用(丑陋)/ZA///Pretoria/0030/这是一个有效的URL吗?那么同样丑陋的/ZA/-/-/Pretoria/0030/呢


有没有主流浏览器变得“聪明”并试图消除类似的东西?

是的,两者都是完全有效的URI。看

有没有主流浏览器变得“聪明”并试图消除类似的东西


据我所知还不算远。顺便说一句,破折号(
-
)在URI中不是特殊字符,因此您真的不需要关心这些字符。

为什么不使用可选参数模型?这两个URL似乎都可行且易于解析:

/ZA/Pretoria/0030
/US/New-York/Nassau-County/Hicksville/51212/
还有,我只是想说一句话:

/AU/Victoria/Melbourne/3000
如果您知道您的第一个、第二个和最后一个项目总是有值,那么为什么不先选择第一个,然后向后解析URL标记呢

# rubyish pseudocode
tokens      = "/AU/Victoria/Melbourne/3000".split("/")
iso_country = tokens[0]

tokens.reverse!
tokens.drop_last_item!

zipcode          = tokens[0] # => 3000
place_name       = tokens[1] # => Melbourne
admin_division_2 = tokens[2] # => Victoria
admin_division_1 = tokens[3] # => nil / ""

我最初打算使用一个可选的参数模型。但后来我意识到我无法知道^/AU/Sometext/$was/AU/admin1/或/AU/place\u name/这就是为什么要颠倒你的论点顺序。一旦你放弃第一个论点,你就已经知道了其余的,只是倒转。啊,现在我知道你要去哪里了。这是用django编写的,因此必须进入视图进行解析,但这是一种优雅的方法。啊,很遗憾,这不是对您问题的直接回答!一点也不抱歉。伪ruby实际上非常接近将在view函数中执行的真实python(django调用控制器、视图和视图模板——我认为这很困难)