Доступ к содержимому 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