18.4.1 wsgiref.util – WSGI环境实用程序
该模块为使用WSGI环境的工作提供了各种实用程序函数。WSGI环境是一个字典,包含了在PEP 333中描述的HTTP请求变量。所有的函数获取一个environ参数,期望兼容的WSGI字典被提供,详细地规范请参见PEP 333。guess_scheme(environ)
通过在environ字典中,检测一个HTTPS环境变量,返回wsgi.url_scheme是否应该是”http”或”https”的一个猜测。返回值是一个字符串。
当创建一个封装CGI或类CGI协议(如FastCGI)的网关时,该函数是有用的。典型地,当请求通过SSL接受时,提供如包含使用”1” “yes”,或”on”作为一个HTTPS变量的值的协议的服务。因此如果这样一个值被发现,该函数返回“https”,否则”http”。
request_uri(environ [, include_query=1])
返回全部请求的URI,可选择地包含查询字符串,利用PEP 333“URL重建”部分发现的步骤。如果include_query为false,查询字符串不包含在产生的URI中。
application_uri(environ)
类似于request_uri,期望PATH_INFO和QUERY_STRING变量被忽略。结果是请求存取的应用程序对象的基URI。
shift_path_info(environ)
从PATH_INFO到SCRIPT_NAME中替换一个单一的名称并返回这个名称。environ字典被置换修改;如果你需要原封不动的保留原始的PATH_INFO或SCRIPT_NAME,使用一个副本。
如果在PATH_INFO中没有剩余的path部分,返回None。
典型性地,被用来处理一个请求的URI路径的每个部分的路径选择,例如作为一系列字典关键字处理路径。路径选择修改传递进来的环境使它适宜于调用位于目标URI中的其它的WSGI应用。例如,如果有一个WSGI应用在/foo,并且请求的URI路径是/foo/bar/baz,在/foo上的WSGI应用调用shift_path_info,它将接收字符串”bar”,环境将被更新更适宜于传递WSGI应用在/foo/bar上。那就是,SCRIPT_NAME将从/foo改变到/foo/bar,并且PATH_INFO将从/bar/baz改变为/baz。
当PATH_INFO仅是一个”/”时,路径选择返回一个空的字符串并且添加一个斜线给SCRIPT_NAME,甚至尽管空路径部分通常忽略,SCRIPT_NAME通常不用斜线结束。这是故意的行为,当使用这个程序完成对象控制时,保证应用可以告诉URIs用/x结束和用/x/结束的区别。
setup_testing_defaults(environ)
默认为测试目的细微的更新environ。
这个程序为WSGI添加各种请求的参数,包括HTTP_HOST,SERVER_NAME,SERVER_PORT,REQUEST_METHOD,SCRIPT_NAME,PATH_INFO,和所有PEP 333定义的wsgi.*变量。它仅提供缺省值,不替换任何这些变量已存在的设置。
这个程序计划使WSGI服务的单元测试和应用建立的虚拟环境更容易。它应该不被实际的WSGI服务和应用使用,因为数据被伪装!
除了上面的环境函数,wsgiref.util模块也提供了这些多方面的实用程序:
is_hop_by_hop(header_name)
如果”header_name”是被RFC 2616定义的HTTP/1.1 “Hop-by-Hop”头返回true。
class FileWrapper(filelike [, blksize=8192])
转换一个类文件对象为迭代的封装。产生的对象支持__getitem__和__iter__迭代风格,兼容Python2.1和Jython。作为迭代上的对象,可选的blksize参数将被重复地传递给filelike对象的read()方法获取产生的字符串。当read()返回一个空字符串时,迭代被结束并且不可被恢复。
如果filelike有一个close()方法,返回的对象将也有一个close()方法,并且当调用时,它将调用filelike对象的close()方法。
出处PYTHON中国([url]www.okpython.com[/url]),关于翻译的任何事情请EMAIL给我zkfarmer([email]zkfarmer@gmail.com[/email]),更多文档在我的站点([url]www.zkfarmer.org[/url]),[color=SeaGreen]请参阅官方英文文档[/color]。
页:
[1]