buf connect-go 路由

buf connect-go 的路由,只是利用了golang http handler 的特性

参考使用

package main
 
import (
    "context"
    "log"
    "net/http"
 
    "github.com/bufbuild/connect-go"
    userloginv1 "github.com/rongfengliang/go-connect-app/pkg/userlogin/v1"
    userloginv1connect "github.com/rongfengliang/go-connect-app/pkg/userlogin/v1/userloginv1connect"
    "golang.org/x/net/http2"
    "golang.org/x/net/http2/h2c"
)
 
type UserLogin struct{}
 
func (s *UserLogin) Login(
    ctx context.Context,
    req *connect.Request[userloginv1.LoginRequest],
) (*connect.Response[userloginv1.LoginResponse], error) {
    log.Println("Request headers: ", req.Header())
    log.Println("Request username: ", req.Msg.Username)
    res := connect.NewResponse(&userloginv1.LoginResponse{
        Token:   "demoapp",
        Exprise: 100,
    })
    res.Header().Set("userlogin-Version", "v1")
    return res, nil
}
 
func main() {
    userlogin := &UserLogin{}
    api := http.NewServeMux()
    api.Handle(userloginv1connect.NewUserLoginServiceHandler(userlogin))
    mux := http.NewServeMux()
   // 使用http.StripPrefix 进行处理
    mux.Handle("/grpc/", http.StripPrefix("/grpc", api))
    http.ListenAndServe(
        "0.0.0.0:8080",
        h2c.NewHandler(mux, &http2.Server{}),
    )
}

参考资料

https://connect.build/docs/go/routing

posted on   荣锋亮  阅读(71)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-09-18 openresty+pdf.js 实现一个通用的pdf预览服务
2019-09-18 cronicle minio s3 存储配置集成
2019-09-18 cronicle 任务调度一主多从安装试用
2018-09-18 socat 广播以及多播
2018-09-18 socat 简单试用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示