发布日期: 2015-05-22
版本号: v1.0rc1

Gin框架迎来重大更新,涵盖性能优化、新增功能及问题修复。性能方面引入零分配路由、优化JSON/XML/文本渲染速度,重构HttpRouter并实施内联/尾调用优化。新增功能包括原生支持context上下文、通配路径路由Any()、静态类型化渲染管道、增强错误API、JSON美化输出、UNIX套接字支持、文件服务路由StaticFile/StaticFS及禁用目录列表选项、服务器推送事件支持,同时新增多种中间件和默认值获取方法。修复了BasicAuth认证、静态文件嵌套路由、重定向逻辑、日志路径显示、文档错误等问题,优化了上下文初始化、绑定/渲染模块及Google App Engine兼容性,并重构了核心模块提升调试信息可读性。

更新内容 (中文)

  • [性能] 零分配路由器
  • [性能] 更快的 JSON、XML 和文本渲染
  • [性能] 为 Gin 定制的深度优化 HttpRouter
  • [性能] 多种代码优化:内联优化、尾调用优化
  • [新增] 原生支持 golang.org/x/net/context
  • [新增] Any(path, handler) 创建匹配任意路径的路由
  • [新增] 重构的渲染管道(更快且静态类型化)
  • [新增] 重构的错误处理 API
  • [新增] IndentedJSON() 支持格式化 JSON 输出
  • [新增] 添加 gin.DefaultWriter
  • [新增] UNIX 套接字支持
  • [新增] 暴露 RouterGroup.BasePath
  • [新增] 使用 go-validate-yourself 进行 JSON 验证(提供丰富选项)
  • [新增] 完整的单元测试套件
  • [新增] 通过 c.Stream() 实现 HTTP 流式传输
  • [新增] StaticFile() 创建用于单个文件服务的路由
  • [新增] StaticFS() 支持禁用目录列表功能
  • [新增] StaticFS() 支持通过虚拟文件系统提供静态文件
  • [新增] 原生 Server-Sent Events 支持
  • [新增] WrapF() 和 WrapH() 辅助函数用于包装 http.HandlerFunc/http.Handler
  • [新增] 添加 LoggerWithWriter() 中间件
  • [新增] 添加 RecoveryWithWriter() 中间件
  • [新增] 添加 DefaultPostFormValue()
  • [新增] 添加 DefaultFormValue()
  • [新增] 添加 DefaultParamValue()
  • [修复] 使用自定义域时的 BasicAuth() 问题
  • [修复] 嵌套路由组中静态文件服务的错误
  • [修复] 使用内置 http.Redirect() 的重定向问题
  • [修复] 请求路径打印的日志问题
  • [修复] 文档拼写错误
  • [修复] Context.Engine 重命名为 Context.engine
  • [修复] 改进调试信息
  • [修复] ErrorLogger 问题
  • [修复] Debug HTTP 渲染
  • [修复] 重构绑定和渲染模块
  • [修复] 重构 Context 初始化
  • [修复] 重构 BasicAuth()
  • [修复] NoMethod/NoRoute 处理程序
  • [修复] HTTP 劫持问题
  • [修复] 改进 Google App Engine 支持(使用 log 替代 fmt)

更新内容 (原始)

  • [PERFORMANCE] Zero allocation router
  • [PERFORMANCE] Faster JSON, XML and text rendering
  • [PERFORMANCE] Custom hand optimized HttpRouter for Gin
  • [PERFORMANCE] Misc code optimizations. Inlining, tail call optimizations
  • [NEW] Built-in support for golang.org/x/net/context
  • [NEW] Any(path, handler). Create a route that matches any path
  • [NEW] Refactored rendering pipeline (faster and static typeded)
  • [NEW] Refactored errors API
  • [NEW] IndentedJSON() prints pretty JSON
  • [NEW] Added gin.DefaultWriter
  • [NEW] UNIX socket support
  • [NEW] RouterGroup.BasePath is exposed
  • [NEW] JSON validation using go-validate-yourself (very powerful options)
  • [NEW] Completed suite of unit tests
  • [NEW] HTTP streaming with c.Stream()
  • [NEW] StaticFile() creates a router for serving just one file.
  • [NEW] StaticFS() has an option to disable directory listing.
  • [NEW] StaticFS() for serving static files through virtual filesystems
  • [NEW] Server-Sent Events native support
  • [NEW] WrapF() and WrapH() helpers for wrapping http.HandlerFunc and http.Handler
  • [NEW] Added LoggerWithWriter() middleware
  • [NEW] Added RecoveryWithWriter() middleware
  • [NEW] Added DefaultPostFormValue()
  • [NEW] Added DefaultFormValue()
  • [NEW] Added DefaultParamValue()
  • [FIX] BasicAuth() when using custom realm
  • [FIX] Bug when serving static files in nested routing group
  • [FIX] Redirect using built-in http.Redirect()
  • [FIX] Logger when printing the requested path
  • [FIX] Documentation typos
  • [FIX] Context.Engine renamed to Context.engine
  • [FIX] Better debugging messages
  • [FIX] ErrorLogger
  • [FIX] Debug HTTP render
  • [FIX] Refactored binding and render modules
  • [FIX] Refactored Context initialization
  • [FIX] Refactored BasicAuth()
  • [FIX] NoMethod/NoRoute handlers
  • [FIX] Hijacking http
  • [FIX] Better support for Google App Engine (using log instead of fmt)

下载链接