这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
介绍
通过一个完整例子,在 Gin 框架中,为每一个 API 自动添加 RequestId 。
我们将会使用 rk-boot 来启动 Gin 框架微服务。
请访问如下地址获取完整教程:
安装
1 | go复制代码go get github.com/rookie-ninja/rk-boot |
快速开始
开启了 meta 中间件之后,每一个请求都会自动包含如下值。
Header 键 | 详情 |
---|---|
X-Request-Id | 中间件会自动生成请求 ID。 |
X-[Prefix]-App | 服务名称。 |
X-[Prefix]-App-Version | 服务版本。 |
X-[Prefix]-App-Unix-Time | 当前服务的 Unix 时间。 |
X-[Prefix]-Request-Received-Time | 接收到请求的时间戳。 |
1.创建 boot.yaml
为了验证,我们启动了 commonService,commonService 里包含了一系列常用 API,例如 /rk/v1/healthy。
1 | yaml复制代码--- |
2.创建 main.go
1 | go复制代码// Copyright (c) 2021 rookie-ninja |
3.启动 main.go
1 | go复制代码$ go run main.go |
4.验证
1 | yaml复制代码$ curl -vs -X GET localhost:8080/rk/v1/healthy |
覆盖 requestId
如果我们希望自定义 requestId,需要添加一个 Header。
1 | go复制代码func Greeter(ctx *gin.Context) { |
RequestId 会被覆盖。
1 | yaml复制代码$ curl -vs -X GET "localhost:8080/v1/greeter?name=rk-dev" |
如果我们启动了日志中间件,那我们会看到如下的日志。
1 | bash复制代码2021-11-21T00:39:04.605+0800 INFO basic/main.go:54 Received request {"requestId": "request-id-override"} |
1 | ini复制代码------------------------------------------------------------------------ |
覆盖 header 前缀
1 | yaml复制代码--- |
1 | yaml复制代码$ curl -vs -X GET localhost:8080/rk/v1/healthy |
本文转载自: 掘金