GoやったよGo #347
毎日Goやってる。
今日は標準のnet/http
パッケージを使って簡単にRESTっぽいことをしたり、WAFであるEchoを使ったりしてみた。
前評判でnet/http
パッケージは機能が充実しててそのままでも結構イケるという話を聞いていたのですが、リクエストメソッド別にハンドラを分けたりということができないっぽくて流石に辛そうだったのでWAFを探してみた結果、EchoかGinがスタンダードっぽかったのでEchoを選んでとりあえず使ってみることにしました。Echoちょこちょこ書いてみた感じは、Node.jsのKoaやExpressにかなり近いような印象を受けました。
あとは、Goのインタフェースについて少し詰まったのでまとめた。
Goはinterface
を使ってダックタイピングを実現することができる。具体的にはnet/http
のHandler
は以下のようなインタフェースで実装されている。
type Handler interface { ServeHTTP(ResponseWriter, *Request) }
このfunc ServeHTTP(ResponseWriter, *Request)
を任意の型をレシーバーに取って実装すると、Handlerとして扱うことができる。(net/http
パッケージのHandle
の第2引数に渡すことができる)
このようにしてオブジェクト指向っぽいことを実現していくのがGoの基本的なやり方なのかな?(こういうのなんていうんだったっけ)
雑談
研究の方はもう一回ちゃんとRFC7540を読む必要が出てきたぞ…おいおい…
一回読んでるから次はちゃんと内容が入ってくることを祈って。