获取POST请求的raw-data

概述

使用Request对象的.body_data方法,就可以获得POST请求的类型为bytes的raw data。

对于任何Method的HTTP请求,都可以获取到它的body data,但前提是前端(例如浏览器)必须支持。一般情况下,只有POST和PUT请求才会发送body data。

示例

from lessweb import Application, Context

def raw(ctx: Context):
    return {'method': ctx.request.method, 'data': ctx.request.body_data.decode()}

app = Application()
app.add_mapping('/data', method='*', dealer=raw)
app.run()

请求1: curl -X POST -d "<xml>123</xml>" "http://localhost:8080/data"
返回: {"method": "POST", "data": "<xml>123</xml>"}

请求2: curl -X GET -d "<xml>123</xml>" "http://localhost:8080/data?a=1"
返回: {"method": "GET", "data": "<xml>123</xml>"}