IRIS自定义http服务

简单服务

目录结构

主目录easyWay

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "net/http"
  4. "github.com/kataras/iris"
  5. )
  6. func main() {
  7. app := iris.New()
  8. app.Get("/", func(ctx iris.Context) {
  9. ctx.Writef("Hello from the server")
  10. })
  11. app.Get("/mypath", func(ctx iris.Context) {
  12. ctx.Writef("Hello from %s", ctx.Path())
  13. })
  14. //这里有任何自定义字段 Handler和ErrorLog自动设置到服务器
  15. srv := &http.Server{Addr: ":8080"}
  16. // http://localhost:8080/
  17. // http://localhost:8080/mypath
  18. app.Run(iris.Server(srv)) // 等同于 app.Run(iris.Addr(":8080"))
  19. // 更多:
  20. //如果您需要在同一个应用程序中使用多个服务器,请参阅“multi”。
  21. //用于自定义listener:iris.Listener(net.Listener)或
  22. // iris.TLS(cert,key)或iris.AutoTLS(),请参阅“custom-listener”示例。
  23. }

多服务

目录结构

主目录multi

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "net/http"
  4. "github.com/kataras/iris"
  5. )
  6. func main() {
  7. app := iris.New()
  8. app.Get("/", func(ctx iris.Context) {
  9. ctx.Writef("Hello from the server")
  10. })
  11. app.Get("/mypath", func(ctx iris.Context) {
  12. ctx.Writef("Hello from %s", ctx.Path())
  13. })
  14. //注意:如果第一个动作是“go app.Run”,则不需要它。
  15. if err := app.Build(); err != nil {
  16. panic(err)
  17. }
  18. //启动侦听localhost:9090的辅助服务器。
  19. //如果您需要在同一个应用程序中使用多个服务器,请对Listen函数使用“go”关键字。
  20. // http://localhost:9090/
  21. // http://localhost:9090/mypath
  22. srv1 := &http.Server{Addr: ":9090", Handler: app}
  23. go srv1.ListenAndServe()
  24. println("Start a server listening on http://localhost:9090")
  25. //启动一个“second-secondary”服务器,监听localhost:5050。
  26. // http://localhost:5050/
  27. // http://localhost:5050/mypath
  28. srv2 := &http.Server{Addr: ":5050", Handler: app}
  29. go srv2.ListenAndServe()
  30. println("Start a server listening on http://localhost:5050")
  31. //注意:app.Run完全是可选的,我们已经使用app.Build构建了应用程序,
  32. //你可以改为创建一个新的http.Server。
  33. // http://localhost:8080/
  34. // http://localhost:8080/mypath
  35. app.Run(iris.Addr(":8080")) //在这里以后就不可以监听了
  36. }

iris服务与原始服务共存

目录结构

主目录stdWay

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "net/http"
  4. "github.com/kataras/iris"
  5. )
  6. func main() {
  7. app := iris.New()
  8. app.Get("/", func(ctx iris.Context) {
  9. ctx.Writef("Hello from the server")
  10. })
  11. app.Get("/mypath", func(ctx iris.Context) {
  12. ctx.Writef("Hello from %s", ctx.Path())
  13. })
  14. //在自定义http.Server上使用'app'作为http.Handler之前调用.Build
  15. app.Build()
  16. //创建我们的自定义服务器并分配Handler/Router
  17. srv := &http.Server{Handler: app, Addr: ":8080"} //你必须设置Handler:app和Addr,请参阅“iris-way”,它会自动执行此操作
  18. // http://localhost:8080/
  19. // http://localhost:8080/mypath
  20. println("Start a server listening on http://localhost:8080")
  21. srv.ListenAndServe() // 等同于 app.Run(iris.Addr(":8080"))
  22. //注意:
  23. //根本不显示所有。 即使应用程序的配置允许,中断处理程序也是如此。
  24. //`.Run`是唯一一个关心这三者的函数。
  25. // 更多:
  26. //如果您需要在同一个应用程序中使用多个服务器,请参阅“multi”。
  27. //用于自定义侦听器:iris.Listener(net.Listener)或
  28. // iris.TLS(cert,key)或iris.AutoTLS(),请参阅“custom-listener”示例。
  29. }