37 lines
		
	
	
		
			817 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			817 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package middleware
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"github.com/go-admin-team/go-admin-core/logger"
							 | 
						||
| 
								 | 
							
									"github.com/go-admin-team/go-admin-core/sdk/pkg"
							 | 
						||
| 
								 | 
							
									"net/http"
							 | 
						||
| 
								 | 
							
									"strings"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/gin-gonic/gin"
							 | 
						||
| 
								 | 
							
									"github.com/google/uuid"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// RequestId 自动增加requestId
							 | 
						||
| 
								 | 
							
								func RequestId(trafficKey string) gin.HandlerFunc {
							 | 
						||
| 
								 | 
							
									return func(c *gin.Context) {
							 | 
						||
| 
								 | 
							
										if c.Request.Method == http.MethodOptions {
							 | 
						||
| 
								 | 
							
											c.Next()
							 | 
						||
| 
								 | 
							
											return
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										requestId := c.GetHeader(trafficKey)
							 | 
						||
| 
								 | 
							
										if requestId == "" {
							 | 
						||
| 
								 | 
							
											requestId = c.GetHeader(strings.ToLower(trafficKey))
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if requestId == "" {
							 | 
						||
| 
								 | 
							
											requestId = uuid.New().String()
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										c.Request.Header.Set(trafficKey, requestId)
							 | 
						||
| 
								 | 
							
										c.Set(trafficKey, requestId)
							 | 
						||
| 
								 | 
							
										c.Set(pkg.LoggerKey,
							 | 
						||
| 
								 | 
							
											logger.NewHelper(logger.DefaultLogger).
							 | 
						||
| 
								 | 
							
												WithFields(map[string]interface{}{
							 | 
						||
| 
								 | 
							
													trafficKey: requestId,
							 | 
						||
| 
								 | 
							
												}))
							 | 
						||
| 
								 | 
							
										c.Next()
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |