使用路由

基本介绍

Iris 支持所有HTTP方法,开发人员还可以为不同方法注册相同路径的处理程序。

第一个参数是HTTP方法,第二个参数是路径的请求路径,第三个可变参数应该包含一个或多个iris.Handler,当用户从服务器请求该特定的资源路径时,由注册的顺序执行。

示例代码:

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. )
  5. func main(){
  6. app := iris.New()
  7. app.Handle("GET", "/contact", func(ctx iris.Context) {
  8. ctx.HTML("<h1> Hello from /contact </h1>")
  9. })
  10. }

为了使最终开发人员更容易,iris为所有HTTP方法提供了功能。第一个参数是路由的请求路径,第二个可变参数应该包含一个或多个iris.Handler,当用户从服务器请求该特定的资源路径时,由注册顺序执行。

示例代码:

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. )
  5. func main(){
  6. app := iris.New()
  7. //GET 方法
  8. app.Get("/", handler)
  9. // POST 方法
  10. app.Post("/", handler)
  11. // PUT 方法
  12. app.Put("/", handler)
  13. // DELETE 方法
  14. app.Delete("/", handler)
  15. //OPTIONS 方法
  16. app.Options("/", handler)
  17. //TRACE 方法
  18. app.Trace("/", handler)
  19. //CONNECT 方法
  20. app.Connect("/", handler)
  21. //HEAD 方法
  22. app.Head("/", handler)
  23. // PATCH 方法
  24. app.Patch("/", handler)
  25. //任意的http请求方法如option等
  26. app.Any("/", handler)
  27. }
  28. func handler(ctx iris.Context){
  29. ctx.Writef("Hello from method: %s and path: %s", ctx.Method(), ctx.Path())
  30. }

分组路由由路径前缀分组的一组路由可以(可选)共享相同的中间件处理程序和模板布局。一个组也可以有一个嵌套组。

.Party 正在用于分组路由,开发人员可以声明无限数量的(嵌套)组。

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. )
  5. func main(){
  6. app := iris.New()
  7. //请在参数化路径部分
  8. users := app.Party("/users", myAuthMiddlewareHandler)
  9. // http://localhost:8080/users/42/profile
  10. users.Get("/{id:int}/profile", userProfileHandler)
  11. // http://localhost:8080/users/inbox/1
  12. users.Get("/inbox/{id:int}", userMessageHandler)
  13. }
  14. func myAuthMiddlewareHandler(ctx iris.Context){
  15. ctx.WriteString("Authentication failed")
  16. }
  17. func userProfileHandler(ctx iris.Context) {//
  18. id:=ctx.Params().Get("id")
  19. ctx.WriteString(id)
  20. }
  21. func userMessageHandler(ctx iris.Context){
  22. id:=ctx.Params().Get("id")
  23. ctx.WriteString(id)
  24. }

也可以使用接受子路由器(Party)的功能编写相同的内容。

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. )
  5. func main(){
  6. app := iris.New()
  7. app.PartyFunc("/users", func(users iris.Party) {
  8. users.Use(myAuthMiddlewareHandler)
  9. // http://localhost:8080/users/42/profile
  10. users.Get("/{id:int}/profile", userProfileHandler)
  11. // http://localhost:8080/users/messages/1
  12. users.Get("/inbox/{id:int}", userMessageHandler)
  13. })
  14. }
  15. func myAuthMiddlewareHandler(ctx iris.Context){
  16. ctx.WriteString("Authentication failed")
  17. ctx.Next()//继续执行后续的handler
  18. }
  19. func userProfileHandler(ctx iris.Context) {//
  20. id:=ctx.Params().Get("id")
  21. ctx.WriteString(id)
  22. }
  23. func userMessageHandler(ctx iris.Context){
  24. id:=ctx.Params().Get("id")
  25. ctx.WriteString(id)
  26. }