跳到主要内容

Middleware

示例

  • 请求的处理时间函数:
package middleware

import (
"context"
"fmt"
"github.com/cloudwego/kitex/pkg/endpoint"
"time"
)
// ApiRequestTimingMiddleware 请求的处理时间
func ApiRequestTimingMiddleware(next endpoint.Endpoint) endpoint.Endpoint {
return func(ctx context.Context, req, res any) error {
begin := time.Now()
err := next(ctx, req, res)
fmt.Printf("请求的处理时间: %v\n", time.Since(begin))
return err
}
}

使用

server

main.go

opts = append(opts, server.WithServiceAddr(addr),server.WithMiddleware(middleware.ApiRequestTimingMiddleware))

Client

cli, err3 := demoservice.NewClient(
"demo",
client.WithMiddleware(middleware.ApiRequestTimingMiddleware),
client.WithResolver(r),
client.WithMetaHandler(transmeta.ClientHTTP2Handler),
client.WithTransportProtocol(transport.GRPC),
client.WithClientBasicInfo(&rpcinfo.EndpointBasicInfo{
ServiceName: "demo",
}),
)