20

での POST リクエストの読み取りに問題がありbottle.pyます。

送信されたリクエストの本文にはテキストが含まれています。29 行目でどのように作成されているかを確認できます: https://github.com/kinetica/tries-on.js/blob/master/lib/game.js

node4 行目で、ベースのクライアントでどのように読み取られるかを確認することもできます: https://github.com/kinetica/tries-on.js/blob/master/masterClient.js

ただし、bottle.pyベースのクライアントでこの動作を模倣することはできませんでした。ドキュメントには、ファイルのようなオブジェクトで生の本文を読み取ることができると書かれていますが、 for ループを使用したり、のメソッドrequest.bodyを使用したりしても、データを取得できません。request.bodyreadlines

で装飾された関数でリクエストを処理してい@route('/', method='POST')ますが、リクエストは正しく到着します。

前もって感謝します。


編集:

完全なスクリプトは次のとおりです。

from bottle import route, run, request

@route('/', method='POST')
def index():
    for l in request.body:
        print l
    print request.body.readlines()

run(host='localhost', port=8080, debug=True)
4

2 に答える 2

19

簡単に試しましたpostdata = request.body.read()か?

次の例は、投稿されたデータを raw 形式で読み取る方法を示していますrequest.body.read()

また、本文の生の内容を (クライアントではなく) ログ ファイルにも出力します。

フォーム プロパティへのアクセスを示すために、クライアントに返す「名前」と「姓」を追加しました。

テストのために、コマンド ラインから curl クライアントを使用しました。

$ curl -X POST -F name=jan -F surname=vlcinsky http://localhost:8080

私のために働くコード:

from bottle import run, request, post

@post('/')
def index():
    postdata = request.body.read()
    print postdata #this goes to log file only, not to client
    name = request.forms.get("name")
    surname = request.forms.get("surname")
    return "Hi {name} {surname}".format(name=name, surname=surname)

run(host='localhost', port=8080, debug=True)
于 2014-04-20T21:30:41.453 に答える