牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

『SimpleHTTPServerの次の一歩としてFlaskを使う』を Golang の martini でやってみるメモ

(golang1.2.1)

golang の martini をちょいと触ってみたいなと思ってたのでやってみた。
元ネタ
SimpleHTTPServerの次の一歩としてFlaskを使う - Qiita

下準備

golang インストールなど

ライブラリなどインストール
go get github.com/go-martini/martini
go get github.com/martini-contrib/render

ファイル

server.go
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"

	"github.com/go-martini/martini"
	"github.com/martini-contrib/render"
)

func hello_world() string {
	return "Hello world!"
}

func send_foo(params martini.Params, r render.Render) {
	r.HTML(200, params["filename"], "world")
}

func save(params martini.Params, request *http.Request) {
	// curl -s -i -X POST  -d 'data=foobarbaz' "http://localhost:3000/api/save/bar.txt"

	filename := params["filename"]
	data := request.FormValue("data")

	fmt.Println(filename)
	fmt.Println(data)

	ioutil.WriteFile(filename, []byte(data), 0644)
}

func main() {
	m := martini.Classic()
	m.Use(render.Renderer(render.Options{
		Directory: "static",
		Extensions: []string{".html"},
	}))

	m.Get("/", hello_world)
	m.Get("/collecting/:filename", send_foo)
	m.Post("/api/save/:filename", save)
	m.Run()
}

実行

$ go run server.go

何か違う気がしなくもないが取りあえず動いた