前置作業:
因會使用到 JSON 物件,所以我們需要用到 Python 內建 JSON 及 urllib2 模組,記得要將兩個模組都載入,如下:
import json
import urllib2
了解 Request 物件:
在開始針對 JSON 資料處理之前,必須要先了解 WebOb 的 Request 物件處理參數的方式。在官方文件中提到 Request 物件會使用 MultiDict 來儲存所有傳入的參數。所以當有 JSON 物件從 Client 端傳入時,你的資料將會轉為 ( Key, value ) 形式,也因此你的 JSON 物件也會 " 長 " 的跟你想的有點不一樣 ( 試試看傳入一個巢狀的 JSON 物件並印出看看資料的結構 )。
以 POST 方式傳入 JSON 資料的處理:
剛剛提到 JSON 資料存入 MultiDict 之後結構會有點不同,為了解決這個問題我們將不使用 Request 幫我們處理好的資料,而是直接針對 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));
在 Request Handler 中處理 JSON 資料方式如下:class YourHandler(webapp2.RequestHandler):
def post(self):
myjson = json.loads(self.request.body)
以 GET 方式傳入 JSON 資料的處理:
/* 方法一 */
$.ajax({
method: "GET",
/* 其它參數與 POST 相同 */
});
/* 方法二 */
$.get("/your_url", JSON.stringify(mydata));
在 Request Handler 中處理 JSON 資料方式如下:class YourHandler(webapp2.RequestHandler):
def get(self):
myjson = json.loads(urllib2.unquote(self.request.query))
Environment :
・ Arch Linux
・ Python 2.7
Reference :
・ Webapp2 official site
・ Request Attributes