常见问答

我在哪里可以找到中间件资源?

可以查看 martini-contrib 项目. 如果看了觉得没有什么好货色, 可以联系martini-contrib的团队成员为你创建一个新的代码资源库.

  • acceptlang - 解析Accept-Language HTTP报头的处理器。
  • accessflags - 启用访问控制处理器.
  • auth - 认证处理器。
  • binding - 映射/验证raw请求到结构体(structure)里的处理器。
  • cors - 提供支持 CORS 的处理器。
  • csrf - 为应用提供CSRF防护。
  • encoder - 提供用于多种格式的数据渲染或内容协商的编码服务。
  • gzip - 通过giz方式压缩请求信息的处理器。
  • gorelic - NewRelic 中间件
  • logstasher - logstash日志兼容JSON中间件
  • method - 通过请求头或表单域覆盖HTTP方法。
  • oauth2 - 基于 OAuth 2.0 的应用登录处理器。支持谷歌、Facebook和Github的登录。
  • permissions2 - 跟踪用户,登录状态和权限控制器
  • render - 渲染JSON和HTML模板的处理器。
  • secure - 提供一些安全方面的速效方案。
  • sessions - 提供Session服务支持的处理器。
  • sessionauth - 提供简单的方式使得路由需要登录, 并在Session中处理用户登录
  • strip - 用于过滤指定的URL前缀。
  • strip - URL前缀剥离。
  • staticbin - 从二进制数据中提供静态文件服务的处理器。
  • throttle - 请求速率调节中间件.
  • vauth - 负责webhook认证的处理器(目前支持GitHub和TravisCI)。
  • web - hoisie web.go's Context

我如何整合到我现有的服务器中?

由于Martini实现了 http.Handler, 所以它可以很简单的应用到现有Go服务器的子集中. 例如说这是一段在Google App Engine中的示例:

  1. package hello
  2.  
  3. import (
  4. "net/http"
  5. "github.com/go-martini/martini"
  6. )
  7.  
  8. func init() {
  9. m := martini.Classic()
  10. m.Get("/", func() string {
  11. return "Hello world!"
  12. })
  13. http.Handle("/", m)
  14. }

我如何修改port/host?

Martini的Run函数会检查PORT和HOST的环境变量并使用它们. 否则Martini将会默认使用localhost:3000如果想要自定义PORT和HOST, 使用martini.RunOnAddr函数来代替.

  1. m := martini.Classic()
  2. // ...
  3. m.RunOnAddr(":8080")