天天看點

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)