# README
RequestID
Request ID middleware for Gin Framework. Adds an indentifier to the response using the X-Request-ID
header. Passes the X-Request-ID
value back to the caller if it's sent in the request headers.
Usage
Start using it
Download and install it.
go get github.com/gin-contrib/requestid
Import it in your code, then use it:
import "github.com/gin-contrib/requestid"
Config
define your custom generator function:
func main() {
r := gin.New()
r.Use(
requestid.New(
requestid.WithGenerator(func() string {
return "test"
}),
requestid.WithCustomHeaderStrKey("your-customer-key"),
),
)
// Example ping request.
r.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
})
// Listen and Server in 0.0.0.0:8080
r.Run(":8080")
}
Example
package main
import (
"fmt"
"net/http"
"time"
"github.com/gin-contrib/requestid"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.New()
r.Use(requestid.New())
// Example ping request.
r.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
})
// Listen and Server in 0.0.0.0:8080
r.Run(":8080")
}
How to get the request identifier:
// Example / request.
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "id:"+requestid.Get(c))
})
You can also get the request identifier from response header:
> curl -i "http://127.0.0.1:8080"
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-Request-ID: 77966910-3912-4193-9b74-267491c51700
Content-Length: 39
id:77966910-3912-4193-9b74-267491c51700
When http request with custom identifier, gin server return the custom identifier in response header.
> curl -i -H "X-Request-ID:test" "http://127.0.0.1:8080"
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-Request-Id: test
Content-Length: 13
id:test
# Functions
Get returns the request identifier.
New initializes the RequestID middleware.
WithCustomHeaderStrKey set custom header key for request id.
WithGenerator set generator function.
WithHandler set handler function for request id with context.
# Type aliases
No description provided by the author
No description provided by the author
No description provided by the author
Option for queue system.