目次
これはなに
- https://github.com/sters/go-func-middleware
- 任意のfunc (context.Context) error {} に対して前処理、後処理を差し込める。
- 例えば、ログを出すようにしたり、メトリクスを取ったり、スリープしたり。
なぜつくったのか
- go-grpc-middlewareのそれってどういう感じで動くんだろうな?というのを、コードを見ながら同じようなものを作って理解したかった。
- が、gRPCをのそれをラップするのはちょっとたいへんそう。
- funcのラップなら簡単では???
作ってみて
- funcが、funcを返すfuncを返すのでなかなか頭が混乱する。。
- middlewareこういう感じか、はよくわかった。
- A -> B -> C -> 本体 -> C -> B -> A と処理されるように。
- funcラップしても使わんやろwと思っていたけれど、意外と使いみちがあるのかもしれない…??と思い始めた。
- けれど、まあ、普通に書いたほうがパフォーマンスもわかりやすさもあると思うので実用性は皆無っぽい。
- middlewareな実装が用意されていないもの(Go組み込みのhttpサーバとか)に、middlewareの機能を差し込むようととして使うのはありかもしれない。