January 7th, 2015
前言:
最近開始深究Go的webframework martini.慢慢開始會寫更多的東西出來.
筆記:
以下敘述的方式,會根據我想要達成的目標依序紀錄一下:
- [JSON] 解決martini JSON的資料解析(parse)
- 不論是Martini或是 http.Request原本基本都會是使用JSON.Unmarshall來處理.
- 這裏需要注意的是,跟當初在處理mongodb的資料一樣.變數的名稱不可以全部是小寫,但是json資料名稱需要全部都是小寫.
- 如果不小心把變數名稱全部打成小寫,會無法正確的Unmarshall資料.
type Response2 struct { Page int `json:"page"` Fruits []string `json:"fruits"` } str := `{"page": 1, "fruits": ["apple", "peach"]}` res := &Response2{} json.Unmarshal([]byte(str), &res) fmt.Println(res) fmt.Println(res.Fruits[0])
- [martini-render] 關於martini 顯示json的顯示部份.原本encoding/json能處理大部分的事情.但是要能完整顯示http status code 與json內容的話.我還是選擇了martini-contrib/render
render.JSON(400, map[string]interface{}{"result": "success"})
- [Martini map]接下來問題是,如何在各個martini handler中,去傳遞你要的變數或是如何把資料庫加入.
var db SomeDB{} //將變數透過martini 傳到各個handler m.Map(&db) ... //新增一個變數參數就可以使用 func someHandler(params martini.Params, r render.Render, db *SomeDB) { .... }
相關文章:
- Go Doc: Init function
- Init是負責每個檔案的起始function,會比main()更早啟動.但是各個檔案的Init並沒有一定順序.
- 根據這份文件提到,他在整個程式中的順序會是:
- 變數起始
- Import
- Init
- Go :Methods on structs
- Build a RESTful API with Martini
- Learning Go with Martini - Working with MongoDB
- Simple App with Go, Martini, Gorp and MySQL