在 python 中使用 Klein 访问 http post 请求的 json 内容

Access json content of http post request with Klein in python

我在 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是同一个字典。

但是,现在我要搬到克莱因,所以服务器代码是这样的:

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

并且在 Klein 中使用的请求不支持相同的功能。我想知道有没有一种方法可以像在 Flask 中一样在 Klein 中获取 json?感谢您阅读此问题。

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