試してみました。
導入方法は、以下のように行います。
- gowebのソースコードをダウンロードする。
- go get code.google.com/p/goweb/goweb
- Google Codeからダウンロードする。
- 1の方法を使った場合は、$GOPATH配下か、GOPATHがなければ、Go言語のコマンドがあるディレクトリにダウンロードされます。
- ダウンロードを行った場合は、任意のディレクトリに展開して下さい。
- ダウンロード後展開 or go getで取得したディレクトリ配下のgowebディレクトリをGAE/Gのアプリケーションディレクトリにコピーする。(GAE/Gの場合は、GOPATH変数を認識しないので、手動でコピーしておく必要があります)
- 以下のようなプログラムを作成し、実行する。
package testapp
import (
"appengine"
"goweb"
"fmt"
"net/http"
)
type PeopleController struct {}
func (p *PeopleController) HandleRequest(c *goweb.Context) {
context := appengine.NewContext(c.Request)
context.Debugf("PeopleController#HandleRequest Called.")
fmt.Fprintf(c.ResponseWriter, "You are looking for person with ID %s", c.PathParams["id"])
fmt.Fprintf(c.ResponseWriter, "\nServerSoftware = %s", appengine.ServerSoftware())
}
func init() {
var peopleController *PeopleController = new(PeopleController)
goweb.Map("/people/{id}", peopleController)
goweb.ConfigureDefaultFormatters()
http.Handle("/", goweb.DefaultHttpHandler)
}
gowebパッケージはapp.yamlがあるディレクトリにコピーしておけば良いです。
URLは、http://localhost:8080/people/testみたいな感じにすると、結果が返ってくる事が
わかると思います。
また、appengineのAPIを実行する場合にappengine.Contextを取得したい時は、
HandleRequestメソッドの引数cからappengine.Contextを生成できます。
context := appengine.NewContext(c.Request)
ソースコードもこれから読んでみようと思っていますが、フレームワークを利用せずに
作成するよりはだいぶ楽かもしれないですね。
ちなみに、gowebのディレクトリの中に、goweb_testappディレクトリがあって、その中には
以前のGAE/Gのバージョンで試していた形跡があります。
api_version: 2なので、1.5.3以前かな?
0 件のコメント:
コメントを投稿