Sve*_*ach 15
直接来自您自己链接的文档:
urllib.parse.urlsplit(urlstring, scheme='', allow_fragments=True)
这类似于urlparse(),但不会从URL中拆分params.urlparse()如果需要更新的URL语法允许将参数应用于URL的路径部分的每个段(请参阅RFC 2396),则通常应该使用此语法.
Car*_*lsh 13
鉴于您链接的文档不包含非空的示例,params我也很困惑,直到找到this。
>>> urllib.parse.urlparse("http://example.com/pa/th;param1=foo;param2=bar?name=val#frag")
ParseResult(scheme='http', netloc='example.com', path='/pa/th', params='param1=foo;param2=bar', query='name=val', fragment='frag')
Run Code Online (Sandbox Code Playgroud)
(一些历史,因为我被书呆子狙击了。)
/user/213/settings除了 url 组件参数(即或查询参数)之外,我从未听说过 URL“参数” /user?id=213,我认为它基本上已经过时了。
一开始,RFC 1738定义了永远不允许出现;在以下位置的HTTP URL path:
http://<host>:<port>/<path>?<searchpart>
Run Code Online (Sandbox Code Playgroud)
在
<path>和<searchpart>组件中,“/”、“;”、“?” 被保留。
;在其他方案中保留有特殊含义,例如ftp:// url-path:
<cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>
Run Code Online (Sandbox Code Playgroud)
显然,在 1995 年,RFC 1808将URL定义为和params之间的顶级组件:pathquery
<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
Run Code Online (Sandbox Code Playgroud)
然后在 1998 年,RFC 2396将 URI定义为具有相邻的顶级组件path并且query:
<scheme>://<authority><path>?<query>
Run Code Online (Sandbox Code Playgroud)
其中path被定义为多个path_segments,每个可以包括param:
path = [ abs_path | opaque_part ]
abs_path = "/" path_segments
path_segments = segment *( "/" segment )
segment = *pchar *( ";" param )
Run Code Online (Sandbox Code Playgroud)
最终在 2005 年,RFC 3986 废弃了 RFC 1808 和 2396,其定义 URI与 RFC 2396 类似:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty
Run Code Online (Sandbox Code Playgroud)
并且 的特殊语法;params被认为是URI 语法的不透明部分,可能特定于 HTTP(S) 方案或只是某些特定实现:
除了分层路径中的点段之外,通用语法认为路径段是不透明的。URI 生成应用程序通常使用段中允许的保留字符来分隔特定于方案或特定于解引用处理程序的子组件。例如,分号(“;”)和等号(“=”)保留字符通常用于分隔适用于该段的参数和参数值。逗号(“,”)保留字符通常用于类似目的。例如,一个 URI 生产者可能使用诸如“name;v=1.1”之类的段来指示对“name”版本 1.1 的引用,而另一个 URI 生产者可能使用诸如“name,1.1”之类的段来指示相同的内容。 参数类型可以通过特定于方案的语义来定义,但在大多数情况下,参数的语法特定于 URI 解除引用算法的实现。
| 归档时间: |
|
| 查看次数: |
8579 次 |
| 最近记录: |