試してみました。
導入方法は、以下のように行います。
- 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 件のコメント:
コメントを投稿