Доступ к содержимому json http-запроса с помощью Klein в python

У меня есть простой HTTP-клиент в Python, который отправляет запрос HTTP-пост, как это:

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

и запрос, который использовался в Klein, не поддерживает ту же функцию. Интересно, есть ли способ получить JSON в Klein таким же образом, как я получил его во Flask? Спасибо за чтение этого вопроса.

1 ответ

Решение

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
Другие вопросы по тегам