安らかなJSONベースのプロトコルを使用して、python3アプリケーションに単純なサーバーフロントエンドを作成しようとしています。これまでのところ、bottleはタスクに最適なフレームワークのようです(python3をサポートし、メソッドディスパッチを適切に処理し、JSONを簡単に返します)。問題は、入力リクエストでJSONを解析することです。
ドキュメントには言及されているだけrequest.fields
でrequest.files
、両方ともマルチパート/フォームデータデータを参照していると思います。リクエストデータに直接アクセスすることについては言及されていません。
ソースコードを覗いてrequest.body
みると、BytesIO型のオブジェクトが見えます。json.load
直接それに基づいて行動することを拒否し、jsonlibで。を使用して死にcan't use a string pattern on a bytes-like object
ます。Content-Type
これを行う適切な方法は、 HTTPヘッダーで指定された文字セットに従って、最初にバイトをUnicode文字にデコードすることです。私はそれを行う方法がわかりません。StringIOクラスを見ることができ、バイトではなく文字のバッファーを保持している可能性があると想定できますが、これが可能であるとしても、BytesIOをStringIOにデコードする方法はわかりません。
もちろん、BytesIOオブジェクトをバイト文字列に読み込んでから文字列にデコードしてからJSONデコーダーに渡すことも可能ですが、正しく理解していれば、全体の優れたバッファリング動作が損なわれます。
それともそれを行うためのより良い方法はありますか?