2012-03-23 54 views
1

我目前在使用瓶子的python中創建一個RESTful webservice。現在,在將使用/實現Web服務API的客戶端,我希望以XML(或JSON)格式獲取輸出。你有什麼想法如何做到這一點?我已經嘗試了jsonify但沒有成功。另外,我更喜歡在輸出中使用XML格式,但是我又不知道如何去做。所以我希望有人能給我一些想法。[Python-Webservice]:如何在Flask上返回並使用XML格式

下面是僞代碼片段,希望能夠澄清我的問題:

/*** webservice ***/ 
from flask import Flask, jsonify 
app = Flask(__name__) 

@app.route("/") 
def hello_world(): 
    return jsonify(message = "hello world!") 

if __name__ == "__main__": 
    app.run() 

/*** client code ***/ 
import urllib2 
server = "http://localhost:5000/" 
req = urllib2.Request(server) 
# req has no data at all :(

希望能得到反饋。比= ks提前

+2

建議:使用[請求](http://docs.python-requests.org/)而不是urllib2,API更好。 – 2012-03-23 13:48:01

回答

0

服務器代碼運行良好。您應該使用普通的Web瀏覽器進行測試,您將看到json響應。您的客戶代碼不完整。還有我的修正:

import urllib2 
server = "http://localhost:5000/" 
req = urllib2.Request(server) 
response = urllib2.urlopen(req) 
print response.read() 

一個更好的方式做HTTP請求在python是使用它提供了一個很簡單但很強大的API的requests module

import requests 
res = requests.get("http://localhost:5000/") 
print res.text 

要構建XML響應我會建議lxml他冷靜etree模件。在xml.etree下的標準庫中還有一個etree模塊。

+0

謝謝Jarus ...我對lxml非常熟悉,並將它用於輸出文本文件。但是,我將如何在其他API中執行此操作?我應該將返回轉換爲lxml格式嗎? – jaysonpryde 2012-03-23 15:21:19

+0

我會使用JSON,因爲它也非常強大,在我眼中比XML更清潔。如果你想使用lxml而不是將你的etree轉換爲xml字符串,並通過view函數返回。 – Jarus 2012-03-24 00:51:51

相關問題