我在任何地方都找不到关于以下有查询字符串的URL是否有效的文档。
http://www.example.com/webapp&someKey=someValue
我知道 ?
开始一个键值对的列表,用 &
.
是 ?
需要吗?
?
似乎是需要后面的部分才会被称为query。
查询字符串的定义是在 RFC 3986. 第3.3节路径说。
路径组件包含的数据,通常以层次形式组织,与非层次查询组件(第3.4节)中的数据一起,用于标识URI方案和命名权(如果有的话)范围内的资源。 路径由第一个问号("?")或数字符号("#")字符或URI的结尾结束。
3.4节定义了查询。
查询组件包含非等级数据,与路径组件(第3.3节)中的数据一起,用于识别URI方案和命名权(如果有)范围内的资源。 查询组件由第一个问号("?")字符表示,并由数字符号("#")字符或URI的结尾结束。
RFC 1738 URL有一个HTTP URL方案的部分。它在3.3节中说。
一个HTTP URL的形式是:
http://<host>:<port>/<path>?<searchpart>
其中的和与第3.1节中的描述相同。如果省略了 : ,则端口默认为 80。 不允许使用用户名或密码。 是HTTP选择器,是一个查询字符串。The 是可选的, 前面的 "?" 也是可选的。如果nor都不存在,""也可以省略。
在and组件中,""、";"、"? "是保留的。 在HTTP中,""字符可以用来指定层次结构。
你可以使用技巧,把你提到的URI,然后把它当作一个查询字符串来分割。像Laravel、Django等框架都允许你用类似查询字符串的方式处理路由。我说的还不止这些, 我只是举了一个关于框架处理URI的例子.
看看Laravel文档中的这个例子。https:/laravel.comdocs7.xrouting#required-parameters. 它展示了Laravel如何采取类似 https:/siteposts1comments3 并通过一个函数处理帖子id 1和评论id 3。
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
也许,你可以处理像 http:/sitewebappssomekeysomevalue.