2015年8月18日

Tornado 教學 (5) - 處理 JSON 格式資料 ( Handle JSON data with Tornado Web Framework )

在上幾篇文章中介紹了使用 Template 及如何取得 Static Files,接著本篇要介紹當 JSON 格式資料作為傳入參數時該如何處理,儘管每個人處理的方式會略有不同,這邊紀錄基本的方法給大家參考。( 其他 Tornado 相關教學可以參考本篇整理 )



前置作業:
因接下來會處理 JSON 物件,所以我們需要用到 Python 內建 JSON 及 urllib2 模組,記得要將兩個模組都載入,如下:
import json
import urllib2


以 POST 方式傳入 JSON 資料的處理:
我們直接針對 Request 傳入的參數字串去轉為 JSON 物件。首先來看看怎麼從 Client 端 POST JSON 資料,
/* 方法一 */
$.ajax({
    method: "POST",
    contentType: "application/json; charset=utf-8",
    url: "/your_url",
    dataType: "json",
    data: JSON.stringify(mydata)
});

/* 方法二 */
$.post("/your_url", JSON.stringify(mydata));
在 Handler 中處理 JSON 資料方式如下:
class YourHandler(tornado.web.RequestHandler):
    def post(self):
        myjson = json.loads(self.request.body)


以 GET 方式傳入 JSON 資料的處理:
/* 方法一 */
$.ajax({
    method: "GET",
    /* 其它參數與 POST 相同 */
});

/* 方法二 */
$.get("/your_url", JSON.stringify(mydata));
在 Handler 中處理 JSON 資料方式如下:
class YourHandler(tornado.web.RequestHandler):
    def get(self):
        myjson = json.loads(urllib2.unquote(self.request.query))



Environment :
  ・ Arch Linux
  ・ Python 2.7

Reference :
  ・ Tornado