首页 > 其他分享 >buf connect-go 路由

buf connect-go 路由

时间:2022-09-18 21:14:56浏览次数:96  
标签:http userlogin userloginv1 api connect go buf

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

标签:http,userlogin,userloginv1,api,connect,go,buf
From: https://www.cnblogs.com/rongfengliang/p/16705784.html

相关文章

  • Go 哈希
    一 哈希表的基本介绍散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查......
  • goo-cqhttp帮助文档
    目录帮助文档一、简介二、创建帮助文档三、最后帮助文档一、简介在经历这个专栏的学习之后,我想go-cqhttp+flask的学习也该告一段落了,因为有部分功能,如定时发送功能,......
  • GO 栈
    栈的介绍有些程序员也把栈称为堆栈,即栈和堆栈是同一个概念栈的英文为(stack)栈是一个先入后出(FILO-FirstInLastOut)的有序列表。栈(stack)是限制线性表中元素的插入和......
  • buf connect-go 试用
    golang包含一个grpc-web可以让浏览器运行grpc,但是是需要一些中间件工具的,connect-go简化了处理,可以基于post通过http协议就可以试用grpc了包含的特性基于http......
  • buf buf.work.yaml 一个好用的功能
    实际上此功能是在学习中发现的,按照一般的玩法,buf的包是需要一个buf.yaml文件的,但是假如没有,同时想进行管理(比如使用bufgenerate)我们可以通过一个buf.work.yaml配置,就......
  • Go 双向链表
    1.双向链表的应用实例使用带head头的双向链表实现——王者容易英雄排行榜单向链表的缺点分析:1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找2)单向......
  • Go 单向环形链表
    单向环形链表单向环形链表是一种特殊的单向链表。单向链表最后一个节点的Next指针指向空。而单向环形链表最后一个节点的Next指针指向头节点。如图所示: packa......
  • Go 学习(一) : Get started with Go
    安装gohttps://go.dev/doc/install安装以后命令行执行goversion然后随便创建一个文件,比如hello.gopackagemainimport"fmt"funcmain(){ fmt.Printl......
  • Go 单链表2
    插入节点1)、头插法packagemainimport"fmt"typeNodestruct{dataintnext*Node}funcShownode(p*Node){//遍历forp!=nil{fm......
  • appium找不到夜神模拟器could not find a connected Android device的解决办法
    报错信息截图如下: 原因就是adb版本与nox_adb版本不一致将adroidsdk platform-tools下的adb.exe拷贝到Nox/bin目录(夜神模拟器安装目录),改名nox_adb.exe。再运行脚......