未知

webobtoolkit的Python项目详细描述


…webob工具包文档主文件,由
Sphinx Quickstart于2014年3月8日09:00:00创建。
您可以完全根据自己的喜好调整此文件,但它至少应包含根"toctree"指令。


webob工具包:对外星人的请求!
==



webob工具包是使用webob的请求和响应对象以及"wsgi中间件"来构建http客户机的工具包。

使用它们的k,例如
金字塔或webtest。



用法
----


>下面是一些如何使用webob工具包的示例。




一个非常简单的http客户端
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果您不知道,webob的请求对象会增长为"get-response"方法对于
向wsgi应用程序或url发送http请求并返回响应。:

>;>;来自webob导入请求
>;>;str(request.blank("https://google.com").get_response())
'301已永久移动\n位置:https://www.google.com/\n内容类型:text/html;charset=utf-8\n日期:2014年3月8日星期六14:58:59 GMT\n下一时间:2014年4月7日星期一14:58:59 GMT\n缓存控制:public,max age=2592000\n服务器:gws\n内容长度:220\nx xss保护:1;mode=block\nx帧选项:sameorigin\n外部协议:443:quic\n\n<;html>;<;head>;<;meta http equiv="content type"content="text/html;charset=utf-8">;\n<;title>;301已移动<;/title>;<;/head>;<;body>;\n<;h1>;301已移动<;/h1>;\n文档已移动\n<;a href="https://www.google.com/">;此处<;/a>;\r\n<;/body>;<;/html>;\r\n'
>;



这是一个非常巧妙的技巧,但随着http客户端的发展,通常您需要其他功能,例如处理"http压缩"或"处理cookies"。

webob工具包提供了"wsgi
中间件"这样的附加功能,它允许您编写自己的解决方案,其方式与编写用作http
服务器的wsgi应用程序的方式大致相同。

g对于wikipedia上的"http压缩"一文,http
客户端可以通过在请求中包含
"接受编码"头来请求压缩响应。在webob中,你可以……:

>;>from webob import request
>;>request.blank("https://github.com",headers={"accept encoding":"gzip,deflate"})。get_response().headers.get("content encoding","content was not encoded")
"gzip"
>;

gzip从github中截取了内容,它的响应很好。然而,如果我们要对
的主体做任何事情,我们必须首先解压缩它。因此,压缩规则似乎是对每个请求的头进行压缩,如果响应包含
"内容编码"头,则对每个响应的主体进行解压缩。





下一个示例使用webobtoolkit的decode_过滤器处理
压缩响应。:

>>gt;来自webob导入请求
>>gt;来自webob。客户端导入发送请求应用程序作为应用程序
>>gt;来自webobtoolkit。筛选器导入解码筛选器
>>gt;应用程序gzip=解码筛选器(应用程序)
>>gt;请求。blank("https://github.com",标题={"Accept-Encoding": "gzip"}).get_response(app).body[:100]
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xdd[\xdbr\xe4\xc6\x91}\xf7W\x94\x9b\x1b\xa3\xdd0\xd1\xf7\x1b9M:\xe6B\xd9\xb3\xb6%\xda\x1cY\x92\x1d\x0eF5Ph`\x08\xa0 \\H\xf6\xfc\x98\xdf\xf7\xcb|\xb2\xaa\x00\x14\xd0M69Kk\xbdV\x84\xa6\x9b@]\xb32o\x9e\xcc\xac^\xfd\xf2\xfd\xb7\xef>;\xfexy\xc1\x82"\x8e\xce\x7f"
>;>request.blank("https://github.com",headers={"accept encoding":"gzip")。获取响应(app_gzip).body[:100]
'<;!doctype html>;\n<;html>;\n<;head prefix="og:http://ogp.me/ns fb:http://ogp.me/ns/fb object:http:/'
>;




首先,我们从weboboolkit导入webob的send-request应用程序和一些wsgi中间件,用于处理压缩的响应。我们用decode_过滤器包装webob的应用程序,以创建一个应用程序
,它将解压缩我们可能遇到的任何响应。

对github的第一个调用是通过webob s应用程序。如您所见,
响应被压缩,正如我们所要求的。第二个调用是
通过我们用
webob工具包解码过滤器包装webob的应用程序创建的新应用程序,正如您所看到的,响应已被
解压缩。

用于客户端的服务器和"wsgi
中间件"的上下文。过滤器和
中间件在实现方式上是相同的。

这里是如何实现解码过滤器的。如您所见,编写过滤器并不需要太多时间。

LiteralInclude::../../../Webobtoolkit/Webobtoolkit/filters.py
:pyobject:decode\filter



>一个更健壮的http客户端
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

请求是一个更有用的http客户端的很好例子。根据
文档,它包含了很多有用的东西,人们希望在http客户机中使用这些东西。它包括一些内容。

*处理压缩
*处理cookies
*处理重定向
*猜测,处理字符集解码
*连接池
*ssl验证
*表单发布
*文件上载


可能还有更多内容。

很多功能都可以写在webob和一系列过滤器之上。我们已经看到如何处理
压缩。webob工具包提供了处理cookie、重定向和处理未指定字符集的过滤器。用法:

>;>from webob import request
>;>from webob.client import send_request_app
>;>from webobtoolkit import filters
>;>requests_app=filters.auto_redirect_filter(filters.cookie_filters.decode_filter(filters.charset_filter)(send庘request庘app)))
>;>request.blank("https://google.com").get庘response(requests庘app)
>;>str(request.blank("https://google.com").get庘response(requests庘app))[:500]
'200 OK\ndate:sat,2014年3月8日17:35:40 GMT\nExpires:-1\nCache control:private,max age=0\n连接t-type:text/html;charset=iso-8859-1\n服务器:gws\nx xss保护:1;mode=block\nx frame选项:sameorigin\n\n<;!doctype html>;<;html itemscope="itemtype="http://schema.org/webpage">;<;head>;<;meta content="搜索世界信息,包括网页、图像、视频等。google有许多特殊功能可以帮助您准确地找到所需的内容。"name="description">;<;meta content="noodp"



>我们使用许多用于处理请求和响应的筛选器来构造请求应用程序。

*如果resp上未指定字符集,则onse(有时会发生
),选择一个安全的默认值,以减少解码错误


*客户端播发对gzip编码的支持,并在必要时解压缩响应
*将为每个响应保留cookie,并为每个请求发送cookie
*如果遇到重定向,请自动执行该操作。
*虽然有些人可能更喜欢使用更好的语法,但webob已经处理了表单帖子。


~~~~~
*对于连接池,urllib3提供了一个易于用于构造备用发送请求的实现。EST_应用程序(请参阅:webob.client.sendrequest)
*SSL验证也是专业的由urllib3提供。_网络广播:http://webob.org
…_ wsgi:http://wsgi.org
…_ http:http://en.wikipedia.org/wiki/hypertext_transfer_protocol
_金字塔:http://docs.pylonsproject.org/en/latest/
…_网络测试:http://webtest.readthedocs.org/en/latest/
…_获取响应:http://docs.webob.org/en/latest/modules/webob.html webob.request.baserequest.getu response
…_` http压缩`:http://en.wikipedia.org/wiki/http_compression
…_`处理Cookie`:http://en.wikipedia.org/wiki/http戥cookie
。_` wsgi中间件:http://be.groovie.org/2005/10/07/wsgi-u和wsgi-u-middleware-is-easy.html
。_发送"请求"应用程序:http://docs.webob.org/en/latest/modules/client.html webob.client.send"请求"应用程序
…_请求:http://docs.python-requests.org/en/latest/






=============
>变更历史
===============





======

-合并请求请求请求地址地址问题:http://github.com/willilis/webobtoolkit/issues/issues/14






<0.2.3
0.2.3




----

-python 3兼容
-重写文档
-通过python setup.py test使用py运行测试更容易


0.2.2
==


-合并请求以解决问题8 https://github.com/twillis/webobtoolkit/issues/8

<0.2.1
=



-检查内容在尝试设置字符集之前键入,因为有些Web服务器的行为不好


>0.2
==


-文档更新
-文件上载语法sugar
-将客户端更改为不依赖全局管道应用程序ngify dict method as may be有用


0.1.3.2
==


-客户端更好地处理multidict to querystring


>0.1.3.1
=


-在测试客户端中启用自动重定向的选项方法



0.1.2
==


-添加了与webtest类似的预配置测试客户端


>0.1.1
==


-添加了文件上载支持
-更改了查询字符串的处理,以便在URL未作为单独参数传入时查看它。




0.1
==

初次发布,因为我在日常工作中需要这个


0.0
==


客户第一次通过,文档第一次通过。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从servlet向所有登录用户发送数据   java为什么需要ScheduledExecutorService。shutdown()使用我100%的CPU吗?   用于计算ArrayList中重复项的java嵌套循环无法正常工作   如何获取使用audioinputstream java下载文件的进度   java Kurento复合网格记录   识别方法的java问题   java on Markerclick listener绘制路线并计算距离   java在API级别16上创建/生成R.id   java如何修复HQL查询中的“意外令牌”错误   Java创建损坏的ZIP文件   JavaGSON。如何将json对象转换为json数组?   java需要配置Spring安全性和Hibernate   Vowpal Wabbit的Java API?