0

小さなAPIプロジェクトでFalconを試しています。残念ながら、json の解析に行き詰まっており、ドキュメントの例のコードが機能しません。

Stack と Google で見つけた多くのことを試しましたが、変更はありません。以下のエラーが発生する次のコードを試しました

import json
import falcon

class JSON_Middleware(object):
    def process_request(self, req, resp):
       raw_json = json.loads(req.stream.read().decode('UTF-8'))
       """Exception: AttributeError: 'str' object has no attribute 'read'"""

       raw_json = json.loads(req.stream.read(), 'UTF-8')
       """Exception: TypeError: the JSON object must be str, not 'bytes'"""

       raw_json = json.loads(req.stream, 'UTF-8')
       """TypeError: the JSON object must be str, not 'Body'"""

私はあきらめようとしていますが、なぜこれが起こっているのか、そしてFalconでJSONを解析する方法を誰かが教えてくれたら、私は非常に感謝しています.

ありがとう

環境: OSX Sierra Python 3.5.2 Falcon などは Pip の最新バージョンです

4

2 に答える 2

2

他のコードが適切に配置されていれば、コードは機能するはずです。簡単なテスト (ファイル名 app.py):

import falcon
import json

class JSON_Middleware(object):
    def process_request(self, req, resp):
       raw_json = json.loads(req.stream.read())
       print raw_json

class Test:
    def on_post(self,req,resp):
        pass

app = application = falcon.API(middleware=JSON_Middleware())
t = Test()
app.add_route('/test',t)

で実行:gunicorn app
$ curl -XPOST 'localhost:8000' -d '{"Hello":"wold"}'

于 2016-10-10T09:14:11.970 に答える