2012-03-23 513 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