
ちがいます。
インフラエンジニアが思うミドルウェアやApacheやEnvoyなどのアプリを動かすソフトのことをさしています。
しかしGoでAPIサーバを立てるときなどに用いられるMiddlewareという言葉は、HTTPリクエストを途中で処理する層のことを指しています。
イメージとしては /topにアクセスがくる→/topを生成して返却 の流れ があるとして、この間に差し込みたい処理のことをMiddlewareと呼ぶようです。
- /topにアクセスがくる→なんらかの処理→/topを生成して返却 の流れ
Middlewareでやること
- リクエストのHTTPヘッダを書き換え
- リクエストへの一意キーの付与
- ログの出力
- 認証
- etc
などシステム全体として管理したいような処理を行います。ドメインに依存しない話ですね。
これでBasic認証が追加できるのは驚いた・・
package main
import (
"github.com/goji/httpauth"
"net/http"
)
func main() {
finalHandler := http.HandlerFunc(final)
authHandler := httpauth.SimpleBasicAuth("username", "password")
http.Handle("/", authHandler(finalHandler))
http.ListenAndServe(":3000", nil)
}
func final(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("OK"))
}