5

我在 python 中有一个简单的 http 客户端,可以像这样发送 http post 请求:

import json
import urllib2
from collections import defaultdict as dd
data = dd(str)
req = urllib2.Request('http://myendpoint/test')
data["Input"] = "Hello World!"
response = urllib2.urlopen(req, json.dumps(data))

在我使用 Flask 的服务器端,我可以定义一个简单的函数

from flask import request
@app.route('/test', methods = ['POST'])
def test():
    output = dd()
    data = request.json

并且data服务器上的字典将与data客户端

但是,现在我要转移到 Klein,所以服务器代码如下所示:

@app.route('/test', methods = ['POST'])
@inlineCallbacks
def test(request):
    output = dd()
    data = request.json <=== This doesn't work

并且克莱因中使用的请求不支持相同的功能。我想知道有没有办法像在 Flask 中一样在 Klein 中获取 json?感谢您阅读这个问题。

4

1 回答 1

8

Asaik Klein 不会让您直接访问 json 数据,但是您可以使用以下代码访问它:

import json

@app.route('/test', methods = ['POST'])
@inlineCallbacks
def test(request):
    output = dd()
    data = json.loads(request.content.read())  # <=== This will work
于 2016-06-06T19:52:38.193 回答