Go gRPC Middleware 项目教程

Go gRPC Middleware 项目教程

go-grpc-middlewareGolang gRPC Middlewares: interceptor chaining, auth, logging, retries and more.项目地址:https://gitcode.com/gh_mirrors/go/go-grpc-middleware

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

Go gRPC Middleware 项目的目录结构如下:

go-grpc-middleware/
├── README.md
├── examples/
│   ├── main.go
│   └── ...
├── interceptors/
│   ├── auth/
│   ├── logging/
│   ├── metrics/
│   └── ...
├── providers/
│   ├── prometheus/
│   └── ...
├── grpc_middleware/
│   ├── chaining.go
│   ├── interceptor.go
│   └── ...
└── ...
  • README.md: 项目介绍和使用说明。
  • examples/: 包含示例代码,展示如何使用 gRPC Middleware。
  • interceptors/: 包含各种拦截器,如认证、日志、指标等。
  • providers/: 包含第三方服务提供者,如 Prometheus。
  • grpc_middleware/: 核心包,包含拦截器链和其他核心功能。

2. 项目的启动文件介绍

项目的启动文件通常位于 examples/ 目录下,例如 examples/main.go。以下是一个简单的启动文件示例:

package main

import (
    "log"
    "net"

    "google.golang.org/grpc"
    "github.com/grpc-ecosystem/go-grpc-middleware"
    "github.com/grpc-ecosystem/go-grpc-middleware/auth"
    "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
    "github.com/grpc-ecosystem/go-grpc-middleware/tags"
)

func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }

    grpcServer := grpc.NewServer(
        grpc.StreamInterceptor(grpc_middleware.ChainStreamServer(
            grpc_ctxtags.StreamServerInterceptor(),
            grpc_zap.StreamServerInterceptor(zapLogger),
            grpc_auth.StreamServerInterceptor(myAuthFunction),
        )),
        grpc.UnaryInterceptor(grpc_middleware.ChainUnaryServer(
            grpc_ctxtags.UnaryServerInterceptor(),
            grpc_zap.UnaryServerInterceptor(zapLogger),
            grpc_auth.UnaryServerInterceptor(myAuthFunction),
        )),
    )

    log.Printf("Starting gRPC server on :50051")
    if err := grpcServer.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}

3. 项目的配置文件介绍

Go gRPC Middleware 项目通常不包含独立的配置文件,而是通过代码中的配置来设置拦截器和其他参数。例如,可以在启动文件中配置日志记录器、认证函数等。

以下是一个简单的配置示例:

var zapLogger *zap.Logger

func init() {
    zapLogger, _ = zap.NewProduction()
}

func myAuthFunction(ctx context.Context) (context.Context, error) {
    token, err := grpc_auth.AuthFromMD(ctx, "bearer")
    if err != nil {
        return nil, err
    }
    // 验证 token
    newCtx := context.WithValue(ctx, "user", "username")
    return newCtx, nil
}

在这个示例中,我们初始化了一个 zap 日志记录器,并定义了一个简单的认证函数 myAuthFunction


以上是 Go gRPC Middleware 项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用该项目。

go-grpc-middlewareGolang gRPC Middlewares: interceptor chaining, auth, logging, retries and more.项目地址:https://gitcode.com/gh_mirrors/go/go-grpc-middleware

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叶彩曼Darcy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值