2012-07-28 200 views
5

我需要调用GET,POST,PUT等请求到另一个URI因为搜索,但我找不到一种方法来做内部的金字塔。目前有什么办法可以做到吗?金字塔subrequests

+0

您是否需要在自己的应用程序中调用视图,或者您是否完全访问另一台服务器? – 2012-07-28 15:09:36

+0

@MartijnPieters另一台服务器 – Wiz 2012-07-28 15:52:52

+0

您可以将问题改为例如“从金字塔应用程序发送请求”? “subrequests”是一个在金字塔中具有特殊含义的术语,因此这是误导。 – 2013-02-04 16:22:11

回答

9

只需使用现有的python库来调用其他web服务器。

在Python 2.x上,使用urllib2,对于python 3.x,请改为使用urllib.request。或者,您可以安装requests

请注意,在您自己提供请求时从您的服务器调用外部网站可能意味着您的访问者最终会等待停止响应的第三方Web服务器。确保你设置了体面的超时时间。

+0

正是我所期待的。感谢 – Wiz 2012-07-28 16:02:27

+0

以增加用户体验,您可以通过AJAX向第三方服务器提出请求。 – born 2013-02-24 13:08:30

6

金字塔使用的WebOb其中有一个客户端API的版本1.2

from webob import Request 
r = Request.blank("http://google.com") 
response = r.send() 

一般要覆盖你只想传递作为参数的要求什么。

from webob import Request 
r = Request.blank("http://facebook.com",method="DELETE") 

另一个方便的功能是,你可以看到该请求作为通过线路

print r 

DELETE HTTP/1.0 
Host: facebook.com:80 

docs

+0

你会如何使用这个POST,PUT等请求? – Wiz 2012-08-01 16:15:41

+0

编辑回答解释webob更多。 – 2012-08-02 13:43:50

+0

哦,我明白了,我仍然觉得请求有一个更清洁的API,所以我继续使用它,但无论如何,谢谢! – Wiz 2012-08-02 15:24:03

1

同时检查响应状态代码通过HTTP:response.status_int 我例如使用它来反省我的内部URI,并查看给定的相对URI是否真的由框架提供服务(例如,生成面包屑并将中间路径作为仅当存在页面时链接的中间路径ind)