網路上找了一下方法,其實方法相當的多.大家可以找自己適合的方式來做,反正我也在學,乾脆把每一種看到的都開始試試看:
-
net/http
-
這篇文章談到如何用net/http 來做,其實也沒那麼難,不過問題都一樣.都得對於每個物件與方式座對應.
-
不僅僅是個別東西得自己寫出來,由於每一個都是走 url.values所以幾乎是無法辨別 albums/1 這樣的REST API,必須傳遞 ?albums=1
-
目前還沒有想到比較好的方式可以做出get/add/delete,繼續研究其他的.
-
-
-
martini算是相當適合拿來做REST(基本上內建已經支援了)
m.Get(“/hello/:name”, func(params martini.Params) string { return “Hello “ + params[“name”] })
-
這邊要注意的是:
-
內容是 :name 你可不能輸入 curl -i localhost.com:xxxx/hello/:name 而必須要輸入 name
-
params[“name”] 出來都是字串,要轉數字要注意error exception.
-
其實有個文件上沒有講清楚的就是針對 Get/PUT/POST 的function input,少寫是會找不到的
func getItem(params martini.Params) string {
//….
}
func updateItem(w http.ResponseWriter, r *http.Request, params martini.Params) (int, string) {
//…..
}
func addItem(w http.ResponseWriter, r *http.Request) (int, string) {
//….
}
-
-
範例與實作的部分:
-
我在練習的時候主要是利用類似範例裡面的in-memory database 還有 martini 來完成REST.此外並沒有用到JSON的格式,主要是因為之後打算拿來練習其他的資料庫mongoDB.
-
實作的時候,我發現問題比較多的其實不外乎就是function的parameter 之外,再來就是client端要如何下指令去打成 GET/PUT/POST/DELETE 的指令,主要用的是CURL這裡簡單的列一下:
-
GET: curl -i ”https://localhost:8001/albums”
-
POST: curl -i POST –data “band=Carcass&title=Heartwork&year=1994” “https://localhost:8001/albums.xml”
-
PUT: curl -i PUT –data “band=Carcass&title=Heartwork&year=1993” “https://localhost:8001/albums/4”
-
DELETE: curl -i DELETE “https://localhost:8001/albums/1”
-
-
-
參考:
-