5

次のような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 で使用されているリクエストは、同じ機能をサポートしていません。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 に答える