Taurus Pro HTTP 是一个高性能、企业级的 Go HTTP 服务框架,专为构建现代化的 Web 应用和 API 服务而设计。该框架提供了完整的 HTTP 服务解决方案,包括请求处理、响应管理、中间件支持、WebSocket 通信、JWT 认证、MCP 协议支持等核心功能。
- 标准化请求/响应处理:统一的 API 响应格式,支持 JSON、XML、HTML 等多种内容类型
- 灵活的路由管理:支持路由组、中间件链式调用、动态路由参数
- 智能请求解析:自动解析 GET/POST 参数、JSON 数据、文件上传等
- Range 请求支持:完整的 HTTP Range 请求处理,支持大文件分片下载
- CORS 中间件:灵活的跨域资源共享配置
- 实时通信:完整的 WebSocket 连接管理和消息处理
- 房间管理:支持多房间、广播消息、连接池管理
- 自动重连:智能的连接恢复和错误处理机制
- 多传输协议:支持 stdio、SSE、Streamable HTTP 等多种传输方式
- 状态管理:支持有状态和无状态两种运行模式
- 集群部署:专为分布式部署场景优化
- 中间件系统:可插拔的中间件架构,支持自定义中间件开发
- 错误处理:统一的错误码管理和异常处理机制
- 日志追踪:内置请求追踪和日志记录
- Go 1.23.0 或更高版本
- 支持的操作系统:Linux、macOS、Windows
go get github.com/stones-hub/taurus-pro-http
go mod tidy
package main
import (
"log"
"net/http"
"github.com/stones-hub/taurus-pro-http/pkg/httpx"
"github.com/stones-hub/taurus-pro-http/pkg/router"
)
func main() {
// 创建路由组
apiGroup := router.RouteGroup{
Prefix: "/api",
Routes: []router.Router{
{
Path: "/hello",
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
httpx.SendResponse(w, http.StatusOK, "Hello World!", nil)
}),
},
},
}
// 添加路由组
router.AddRouterGroup(apiGroup)
// 加载所有路由
mux := router.LoadRoutes()
// 启动服务器
log.Fatal(http.ListenAndServe(":8080", mux))
}
package main
import (
"log"
"time"
"github.com/stones-hub/taurus-pro-http/pkg/server"
)
func main() {
// 创建服务器配置
srv := server.New(server.Config{
Addr: ":8080",
ReadTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
IdleTimeout: 300 * time.Second,
MaxHeaderBytes: 1 << 20,
})
// 启动服务器
errChan := make(chan error, 1)
srv.Start(errChan)
log.Println("🚀 服务器已启动,端口: 8080")
// 等待服务器运行
select {
case err := <-errChan:
log.Fatalf("服务器启动失败: %v", err)
}
}
func handleRequest(w http.ResponseWriter, r *http.Request) {
// 获取 GET 参数
if value, err := httpx.GetParam(r, "id"); err == nil {
log.Printf("ID: %s", value)
}
// 获取多个同名参数
if values, err := httpx.GetParams(r, "tags"); err == nil {
log.Printf("Tags: %v", values)
}
// 解析 JSON 请求体
if data, err := httpx.ParseJson(r); err == nil {
log.Printf("JSON data: %+v", data)
}
}
func handleFileUpload(w http.ResponseWriter, r *http.Request) {
// 解析多部分表单文件
files, err := httpx.ParseMultipartFile(r, "file")
if err != nil {
httpx.SendResponse(w, httpx.StatusInvalidRequest, nil, nil)
return
}
// 保存上传的文件
if err := httpx.SaveUploadFiles(files, "./uploads"); err != nil {
httpx.SendResponse(w, http.StatusInternalServerError, nil, nil)
return
}
httpx.SendResponse(w, http.StatusOK, "Files uploaded successfully", nil)
}
func handleResponse(w http.ResponseWriter, r *http.Request) {
// 发送 JSON 响应
httpx.SendResponse(w, http.StatusOK, map[string]interface{}{
"message": "Success",
"data": []string{"item1", "item2"},
}, nil)
// 发送 XML 响应
httpx.SendResponse(w, http.StatusOK, data, map[string]string{
"Content-Type": "application/xml",
})
// 发送 HTML 响应
httpx.SendResponse(w, http.StatusOK, "<h1>Hello World</h1>", map[string]string{
"Content-Type": "text/html",
})
}
import (
"github.com/stones-hub/taurus-pro-http/pkg/middleware"
)
func main() {
// 配置 CORS
corsConfig := &middleware.CORSConfig{
AllowedOrigins: []string{"http://localhost:3000", "https://example.com"},
AllowedMethods: []string{"GET", "POST", "PUT", "DELETE"},
AllowedHeaders: []string{"Content-Type", "Authorization"},
}
// 全局应用 CORS
router.Use(middleware.CORSMiddleware(corsConfig))
}
import (
"github.com/stones-hub/taurus-pro-http/pkg/wsocket"
)
func main() {
// 初始化 WebSocket
wsocket.Initialize()
// 添加 WebSocket 路由
router.AddRouter(router.Router{
Path: "/ws",
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
wsocket.HandleWebSocket(w, r, messageHandler)
}),
})
}
func messageHandler(conn *websocket.Conn, messageType int, message []byte) error {
// 处理接收到的消息
log.Printf("Received: %s", string(message))
// 发送响应消息
return conn.WriteMessage(messageType, []byte("Message received"))
}
func main() {
// 创建 WebSocket Hub
hub := wsocket.NewWebSocketHub()
// 启动 Hub
go hub.Run()
router.AddRouter(router.Router{
Path: "/ws/room",
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
wsocket.HandleWebSocketRoom(w, r, messageHandler, hub, "default")
}),
})
}
import (
"github.com/stones-hub/taurus-pro-http/pkg/mcp"
)
func main() {
// 创建 MCP 服务器
mcpServer, cleanup, err := mcp.New(
mcp.WithName("my-mcp-server"),
mcp.WithVersion("1.0.0"),
mcp.WithTransport(mcp.TransportStreamableHTTP),
mcp.WithMode(mcp.ModeStateless),
)
if err != nil {
log.Fatal(err)
}
defer cleanup()
// 启动 MCP 服务器
if err := mcpServer.Start(); err != nil {
log.Fatal(err)
}
}
taurus-pro-http/
├── bin/ # 可执行文件
├── docs/ # 文档
├── examples/ # 使用示例
├── pkg/ # 核心包
│ ├── httpx/ # HTTP 扩展
│ │ ├── request.go # 请求处理
│ │ ├── response.go # 响应处理
│ │ └── wrapper/ # 包装器
│ ├── middleware/ # 中间件
│ │ ├── cors.go # CORS 中间件
│ │ └── recovery.go # 恢复中间件
│ ├── router/ # 路由管理
│ │ └── router.go # 路由核心
│ ├── server/ # 服务器
│ │ └── server.go # HTTP 服务器
│ ├── wsocket/ # WebSocket
│ │ ├── broadcast.go # 广播功能
│ │ ├── handler.go # 处理器
│ │ └── websocket.go # WebSocket 核心
│ └── mcp/ # MCP 协议
│ └── server.go # MCP 服务器
├── scripts/ # 系统优化脚本
├── go.mod # Go 模块文件
├── go.sum # 依赖校验文件
└── README.md # 项目说明
type Config struct {
Addr string // 监听地址
ReadTimeout time.Duration // 读取超时
WriteTimeout time.Duration // 写入超时
IdleTimeout time.Duration // 空闲超时
MaxHeaderBytes int // 最大头部大小
}
type CORSConfig struct {
AllowOrigins string // 允许的源,支持多个域名用逗号分隔,或使用 "*"
AllowMethods string // 允许的方法,如 "GET,POST,PUT,DELETE,OPTIONS"
AllowHeaders string // 允许的头部,如 "Content-Type,Authorization"
AllowCredentials bool // 是否允许携带凭证
MaxAge string // 预检请求缓存时间(秒)
}
项目提供了针对不同硬件配置的系统优化脚本:
scripts/optimize_system_8c16g.sh
- 8核16G系统优化scripts/optimize_system_16c32g.sh
- 16核32G系统优化scripts/optimize_system_safe.sh
- 安全优化配置
func initGoRuntime() {
// 设置CPU核心数
runtime.GOMAXPROCS(8)
// 设置GC参数
debug.SetGCPercent(150)
// 设置内存限制
debug.SetMemoryLimit(12 * 1024 * 1024 * 1024)
}
const (
StatusInvalidRequest = 1001 // 无效请求
StatusInvalidParams = 1002 // 无效参数
StatusUnauthorized = 1003 // 未授权
)
type Response struct {
Code int `json:"code"` // 状态码
Message string `json:"message"` // 状态消息
Data interface{} `json:"data"` // 响应数据
}
我们欢迎所有形式的贡献!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启 Pull Request
# 克隆仓库
git clone https://github.com/stones-hub/taurus-pro-http.git
# 进入项目目录
cd taurus-pro-http
# 安装依赖
go mod tidy
# 运行测试
go test ./...
# 构建项目
go build ./...
本项目采用 Apache License 2.0 许可证 - 查看 LICENSE 文件了解详情。
- 作者: yelei
- 邮箱: 61647649@qq.com
- 项目地址: https://github.com/stones-hub/taurus-pro-http
感谢所有为这个项目做出贡献的开发者和用户!
Taurus Pro HTTP - 构建高性能 HTTP 服务的首选框架 🚀