Run()

Negroni 有一个很好用的函数 Run , Run 接收 addr 地址字符串 http.ListenAndServe.

  1. package main
  2.  
  3. import (
  4. "github.com/urfave/negroni"
  5. )
  6.  
  7. func main() {
  8. n := negroni.Classic()
  9. n.Run(":8080")
  10. }

未提供地址的情况下,会使用 PORT 系统环境变量, 若未定义该系统环境变量则会用预设的地址, 请参考 Run 详情说明。

一般来说使用 net/http 方法, 并且将 Negroni 当作处理器传入, 这样可定制化更佳, 例如:

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "log"
  6. "net/http"
  7. "time"
  8.  
  9. "github.com/urfave/negroni"
  10. )
  11.  
  12. func main() {
  13. mux := http.NewServeMux()
  14. mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
  15. fmt.Fprintf(w, "Welcome to the home page!")
  16. })
  17.  
  18. n := negroni.Classic() // 导入一些预设的中间件
  19. n.UseHandler(mux)
  20.  
  21. s := &http.Server{
  22. Addr: ":8080",
  23. Handler: n,
  24. ReadTimeout: 10 * time.Second,
  25. WriteTimeout: 10 * time.Second,
  26. MaxHeaderBytes: 1 << 20,
  27. }
  28. log.Fatal(s.ListenAndServe())
  29. }