ผมเลือก http://github.com/ant0ine/go-json-rest มาลองเล่นเป็นตัวแรก เริ่มเลย...
สร้างไฟล์ชื่อ restmain.go (หรืออะไรก็ได้)
แทรก import ก่อน
import (
"net/http"
"github.com/ant0ine/go-json-rest"
)
แล้วสร้าง func main
func main() {
handler := rest.ResourceHandler{}
handler.SetRoutes(
rest.Route{"Get", "/users/:id", GetUser},
)
http.ListenAndServe(":8080", &handler)
}
อธิบายได้ว่า ประกาศ handler ด้าย rest ของ go-json-rest แล้ว SetRoutes ไปที่ url ที่เราต้องการ จากนั้นยัดเข้าท่ามาตรฐานของ net/http package ของ Go
ไปดูที่ handler กัน
func GetUser(w *rest.ResponseWriter, req *rest.Request) {
user := User{
Id: req.PathParam("id"),
Name: "McDuck",
}
w.WriteJson(&user)
}
ทดลองง่ายๆ ด้วยการส่งอะไรมา (ผ่าน url parameter) ก็จัดการส่งกลับ (ด้วย json format) เราก็ต้องสร้าง struct สำหรับการเก็บข้อมูลก่อนแปลงเป็น json
type User struct {
Id string
Name string
}
แล้วก็ assign (:=) user โดยมี Id = ค่า id ที่ส่งผ่านมาทาง url parameter และ name (อันนี้ใส่เอง) จากนั้นใช้ res.ResponseWriter เขียน Json กลับไปที่ resquester
ก่อน run set GOPATH ก่อน (path เดียวกับ ที่เราเขียน code ด้านบน...)
$ export GOPATH=`pwd`
(windows platform ไปหาทางเอาเอง นาทีนี้กำลังงอล Windows, Hang อยู่ได้ แม่ม...)
จากนั้นเรียก
$ go get .
go จะ download source มาจาก github.com/ant0ine/go-json-rest ไว้ที่ src ให้เรา จากนั้น
$ go run restmain.go
แล้วเปิด browser ไปที่ http://localhost:8080/users/1001100
Result :
{ "Id": "10010", "Name": "McDuck" }
[ง่ายดีจังตังค์อยู่ครบ]
source restmain.go
//-------------------------------------------------------------
package main
import (
"github.com/ant0ine/go-json-rest"
"net/http"
)
type User struct {
Id string
Name string
}
func GetUser(w *rest.ResponseWriter, req *rest.Request) {
user := User{
Id: req.PathParam("id"),
Name: "McDuck",
}
w.WriteJson(&user)
}
func main() {
handler := rest.ResourceHandler{}
handler.SetRoutes(
rest.Route{"Get", "/users/:id", GetUser},
)
http.ListenAndServe(":8080", &handler)
}
//-------------------------------------------------------------
ไม่มีความคิดเห็น:
แสดงความคิดเห็น