2012-07-28 305 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)