echo製のサーバでgRPCも走らせる方法
echoで作ってるRESTサーバにgRPCを足したかったのだけど、さっとやり方が見つからなかったのでメモ
こんな感じのechoのミドルウェアを作って
func GRPCMiddleware(grpcServer *grpc.Server) func(next echo.HandlerFunc) echo.HandlerFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
r := c.Request()
w := c.Response()
if r.ProtoMajor == 2 && strings.Contains(r.Header.Get("Content-Type"), "application/grpc") {
grpcServer.ServeHTTP(w, r)
return nil
}
if err := next(c); err != nil {
c.Error(err)
}
return nil
}
}
}
使う
e.Use(GRPCMiddleware(gRPCServer))
認証とかロギング エラーハンドリングを一元管理できていいです。
そのうちjsからgRPC叩けるようなればgRPCだけでいいんでしょうけど、、
ネタ元
https://github.com/philips/grpc-gateway-example/blob/master/cmd/serve.go#L51
Author And Source
この問題について(echo製のサーバでgRPCも走らせる方法), 我々は、より多くの情報をここで見つけました https://qiita.com/nati-ueno/items/9ae33c7ac737c4f91b18著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .