Skip to content

Bury-Lee/http-echo-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

http-echo-tool

一个供前端使用的测试工具,也可以作为中间件使用

Gin 请求日志调试服务器

一个基于 Gin Web Framework 的轻量级调试服务器,用于捕获和打印所有 HTTP 请求的详细信息(Headers、Cookies、Body),方便开发调试和接口分析。

✨ 功能特性

  • 🔍 完整请求日志:自动打印每个请求的 Method、URL、ClientIP、Headers、Cookies 和 Body
  • 📝 Body 截断显示:超过 500 字符的请求体自动截断,避免控制台刷屏
  • 🔄 Body 无损传递:读取 Body 后重新封装,确保后续 Handler 能正常读取
  • 🌐 CORS 跨域支持:内置跨域配置,支持前端开发调试
  • 📁 静态文件服务:提供本地静态文件托管
  • 🎯 零侵入设计:通过中间件实现,不影响业务逻辑

🚀 快速开始

前置要求

  • Go 1.18+
  • 安装了 Gin 框架

安装依赖

go get github.com/gin-gonic/gin
go get github.com/gin-contrib/cors

运行服务

go run main.go

服务将启动在 http://127.0.0.1:8081

📂 项目结构

.
├── main.go          # 主程序入口
├── static/          # 静态文件目录(可选)
└── README.md        # 项目说明

🔧 配置说明

修改监听地址

编辑 main() 函数中的以下代码:

// 修改启动地址
fmt.Println("服务器启动于: http://127.0.0.1:8081 ")
// 启动服务器
if err := r.Run("127.0.0.1:8081"); err != nil {
    panic(err)
}

CORS 配置

当前配置允许所有来源(*),生产环境建议修改为具体域名:

config.AllowOrigins = []string{"http://localhost:3000", "https://yourdomain.com"}

静态文件路径

当前配置将项目根目录(./)作为静态文件服务根路径:

r.Static("", "./")

访问 http://localhost:8081/index.html 将自动寻找 ./index.html 文件。

📋 使用示例

1. 查看请求日志

启动服务后,任何 HTTP 请求都会在控制台输出如下格式的日志:

========== 收到新请求 ==========
Method: POST
URL: /test-api
Remote Addr: 127.0.0.1
--- Request Headers ---
Content-Type: application/json
User-Agent: Mozilla/5.0...
Cookie: session_id=abc123; user=john
--- Request Body ---
{"name": "test", "value": 123}
============================

2. 测试 POST 接口

服务内置了一个测试接口 /test-api

curl -X POST http://127.0.0.1:8081/test-api \
  -H "Content-Type: application/json" \
  -d '{"message": "hello"}'

3. 静态文件访问

将文件放在项目根目录,通过浏览器直接访问:

http://127.0.0.1:8081/your-file.html
http://127.0.0.1:8081/images/logo.png

⚠️ 注意事项

  1. 生产环境:此中间件主要用于开发调试,生产环境建议关闭或降低日志级别
  2. 大文件上传:上传大文件时,Body 日志可能会占用大量内存和输出空间
  3. 二进制数据:图片、文件等二进制 Body 会尝试以字符串形式打印,可能出现乱码

🛠️ 进阶用法

添加响应日志

如需记录响应数据,可扩展中间件:

// 在 c.Next() 后添加响应记录
c.Next()
fmt.Printf("Response Status: %d\n", c.Writer.Status())

日志输出到文件

fmt.Println 替换为日志库(如 logruszap),并配置输出到文件。

About

一个供前端使用的测试工具,也可以作为中间件使用

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages