希曼日记

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",
		}),
	)