python – 使用bottle.py读取POST主体

我无法使用bottle.py读取POST请求.

发送的请求在其正文中有一些文本.你可以看到它是如何在第29行:https://github.com/kinetica/tries-on.js/blob/master/lib/game.js.

您还可以在第4行:https://github.com/kinetica/tries-on.js/blob/master/masterClient.js上看到它在基于节点的客户端上的读取方式.

但是,我无法在我的基于bottle.py的客户端上模仿此行为. docs说我可以用一个类似文件的对象读取raw body,但是我不能在request.body上使用一个for循环,也不能使用request.body的readlines方法.

我在使用@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)
你试过简单的postdata = request.body.read()吗?

以下示例显示使用request.body.read()读取原始格式的发布数据

它也打印到​​日志文件(而不是客户端)的原始内容的身体.

为了显示表单属性的访问,我添加了向客户端返回“name”和“surname”.

对于测试,我使用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)
翻译自:https://stackoverflow.com/questions/14988887/reading-post-body-with-bottle-py

转载注明原文:python – 使用bottle.py读取POST主体