天天看点

post接受json tornado_tornado接受post参数问题

解析tornado查询参数:self.request.query_arguments

self.get_query_argument[s](参数名称)

解析tornado的post参数:self.request.body_arguments

self.get_body_argument[s](参数名称)

get,post解析参数都可:self.get_argument[s](参数名称)

原始的post参数:post_data = self.request.body.decode('utf-8')

headers参数:self.request.headers,对象(字典对象)

在项目中解析post参数时,发现以下问题:

request.body_arguments可以获取到form数据,但不能获取到curl过来的json数据

request.body.decode('utf-8')可以获取到所有的数据,但是是原始数据。

如果原始数据是curl过来json数据:直接json.loads(***)即可。

如果原始数据是form数据:直接json.loads(*)将抛出异常,因为数据格式是: username=abc%E5%8C%97%E4%BA%AC&email=&website=abc&language=%E4%B8%AD%E5%9B%BD

解决方法:

post_data = self.request.body_arguments

post_data = {x: post_data.get(x)[0].decode("utf-8") for x in post_data.keys()}        if not post_data:

post_data = self.request.body.decode('utf-8')

post_data = simplejson.loads(post_data)

post接受json tornado_tornado接受post参数问题

声明:本博客原创内容,欢迎转发,转载请来源:www.likeinlove.com/info/48.html。

很赞哦!(

12)