Go言語のRest Framework 「Sleepy」を触ってみた
コードが100行ちょっとくらいなので読みやすい。
作りとしてはstructが{Method}Supportedインターフェースを実装していれば、そのメソッドを呼び出せるようになる感じ。
例えばPOSTをサポートするめにはPostSupportedインターフェースを実装する。
type PostSupported interface { Post(url.Values) (int, interface{}) }
READMEに書いてあるサンプルがGetだけだったので、適当にPostできるようにしてみた。
package main import ( "net/url" "github.com/dougblack/sleepy" ) type Todo struct { Title string Done bool } var store []Todo func init() { store = []Todo{ Todo{"あいうえお", false}, Todo{"かきくけこ", false}, } } func (todo Todo) Get(values url.Values) (int, interface{}) { data := map[string][]Todo{"todos": store} return 200, data } func (todo Todo) Post(values url.Values) (int, interface{}) { new_todo := Todo{ Title: values["title"][0], Done: false, } store = append(store, new_todo) return 200, nil } func main() { todo := new(Todo) var api = sleepy.NewAPI() api.AddResource(todo, "/todos") api.Start(3000) }
手っ取り早く叩いてみるのに、PycharmのRest Clientが便利。