Skip to content

Files

Latest commit

 

History

History

weblab

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

中间件适合做什么事情?

首先中间件适合做非业务相关的全局性的逻辑

其次可以参考开源Go框架chi的示例

compress.go
  => 对http的响应体进行压缩处理
heartbeat.go
  => 设置一个特殊的路由,例如/ping,/healthcheck,用来给负载均衡一类的前置服务进行探活
logger.go
  => 打印请求处理处理日志,例如请求处理时间,请求路由
profiler.go
  => 挂载pprof需要的路由,如`/pprof``/pprof/trace`到系统中
realip.go
  => 从请求头中读取X-Forwarded-For和X-Real-IP,将http.Request中的RemoteAddr修改为得到的RealIP
requestid.go
  => 为本次请求生成单独的requestid,可一路透传,用来生成分布式调用链路,也可用于在日志中串连单次请求的所有逻辑
timeout.go
  => 用context.Timeout设置超时时间,并将其通过http.Request一路透传下去
throttler.go
  => 通过定长大小的channel存储token,并通过这些token对接口进行限流