Http //或/-/是有效的URL组件吗?
背景:我正在创建一个分层的地理目录。我正在使用的地理数据库有一些字段,我可以创建如下URL: /国际标准化组织国家/第一行政部门/第二行政部门/地名/邮政编码/ ISO_国家/地区、地名和zipcode都保证有数据。但是第一和第二行政部门可能有数据,也可能没有数据 在美国,我有一个/US/纽约/拿骚县/Hicksville/51212/ 但在南非我有/ZA/[blank]/[blank]/Pretoria/0030/ 如果我使用(丑陋)/ZA///Pretoria/0030/这是一个有效的URL吗?那么同样丑陋的/ZA/-/-/Pretoria/0030/呢Http //或/-/是有效的URL组件吗?,http,url,Http,Url,背景:我正在创建一个分层的地理目录。我正在使用的地理数据库有一些字段,我可以创建如下URL: /国际标准化组织国家/第一行政部门/第二行政部门/地名/邮政编码/ ISO_国家/地区、地名和zipcode都保证有数据。但是第一和第二行政部门可能有数据,也可能没有数据 在美国,我有一个/US/纽约/拿骚县/Hicksville/51212/ 但在南非我有/ZA/[blank]/[blank]/Pretoria/0030/ 如果我使用(丑陋)/ZA///Pretoria/0030/这是一个有效的URL
有没有主流浏览器变得“聪明”并试图消除类似的东西?是的,两者都是完全有效的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调用控制器、视图和视图模板——我认为这很困难)