Go gRPC 拦截器项目教程

Go gRPC 拦截器项目教程

go-grpc-interceptorgRPC server insterceptor for golang项目地址:https://gitcode.com/gh_mirrors/go/go-grpc-interceptor

1. 项目的目录结构及介绍

go-grpc-interceptor/
├── README.md
├── go.mod
├── go.sum
├── interceptor/
│   ├── auth.go
│   ├── logging.go
│   ├── recovery.go
│   └── validator.go
├── server/
│   ├── main.go
│   └── server.go
└── client/
    ├── main.go
    └── client.go
  • README.md: 项目说明文件,包含项目的基本信息和使用指南。
  • go.mod 和 go.sum: Go 模块文件,用于管理项目的依赖。
  • interceptor/: 包含各种拦截器的实现,如认证、日志、恢复和验证拦截器。
  • server/: 包含服务器端的代码,包括启动文件和服务器逻辑。
  • client/: 包含客户端的代码,包括启动文件和客户端逻辑。

2. 项目的启动文件介绍

服务器端启动文件 (server/main.go)

package main

import (
    "log"
    "net"
    "google.golang.org/grpc"
    "github.com/mercari/go-grpc-interceptor/server"
)

func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    s := grpc.NewServer(
        grpc.UnaryInterceptor(server.UnaryInterceptorChain),
        grpc.StreamInterceptor(server.StreamInterceptorChain),
    )
    // 注册服务
    // ...
    log.Printf("server listening at %v", lis.Addr())
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}

客户端启动文件 (client/main.go)

package main

import (
    "log"
    "google.golang.org/grpc"
    "github.com/mercari/go-grpc-interceptor/client"
)

func main() {
    conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure(), grpc.WithUnaryInterceptor(client.UnaryInterceptor), grpc.WithStreamInterceptor(client.StreamInterceptor))
    if err != nil {
        log.Fatalf("did not connect: %v", err)
    }
    defer conn.Close()
    // 创建客户端
    // ...
}

3. 项目的配置文件介绍

项目中没有显式的配置文件,但可以通过环境变量或命令行参数进行配置。例如,服务器端监听的端口可以通过以下方式配置:

port := os.Getenv("SERVER_PORT")
if port == "" {
    port = "50051"
}
lis, err := net.Listen("tcp", ":"+port)

客户端连接的服务器地址也可以通过环境变量配置:

serverAddress := os.Getenv("SERVER_ADDRESS")
if serverAddress == "" {
    serverAddress = "localhost:50051"
}
conn, err := grpc.Dial(serverAddress, grpc.WithInsecure(), grpc.WithUnaryInterceptor(client.UnaryInterceptor), grpc.WithStreamInterceptor(client.StreamInterceptor))

通过这种方式,可以灵活地配置项目的行为,而无需修改代码。

go-grpc-interceptorgRPC server insterceptor for golang项目地址:https://gitcode.com/gh_mirrors/go/go-grpc-interceptor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滑芯桢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值