Go言語のRest Framework 「Sleepy」を触ってみた

dougblack/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が便利。

Postして


Get