Iris路由和路由组
Posted yzg-14
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Iris路由和路由组相关的知识,希望对你有一定的参考价值。
package main import ( "github.com/kataras/iris" "github.com/kataras/iris/context" ) func main() { app := iris.New() //1.handle方式处理请求 //同一用来处理请求的方法 //GET app.Handle("GET", "/userinfo", func(context context.Context) { path := context.Path() app.Logger().Info(path) app.Logger().Error(" request path :", path) }) //post app.Handle("POST", "/postcommit", func(context context.Context) { path := context.Path() app.Logger().Info(" post reuqest, the url is : ", path) context.html(path) }) //正则表达式:{name} app.Get("/weather/{date}/{city}", func(context context.Context) { path := context.Path() //使用:context.Params().Get("name") 获取正则表达式变量 date := context.Params().Get("date") city := context.Params().Get("city") context.WriteString(path + " , " + date + " , " + city) }) //1.Get 正则表达式 路由 //使用:context.Params().Get("name") 获取正则表达式变量 //正则表达式:{name} app.Get("/hello/{name}", func(context context.Context) { //获取变量 path := context.Path() app.Logger().Info(path) //获取正则表达式变量内容值 name := context.Params().Get("name") context.HTML("<h1>" + name + "</h1>") }) //2.自定义正则表达式变量路由请求 {unit64:uint64}进行变量类型限制 app.Get("/api/users/{userid:uint64}", func(context context.Context) { userID, err := context.Params().GetUint("userid") if err != nil { //设置请求状态码,状态码可以自定义 context.JSON(map[string]interface{}{ "requestcode": 201, "message": "bad request", }) return } context.JSON(map[string]interface{}{ "requestcode": 200, "user_id": userID, }) }) //自定义正则表达式路由请求 bool //api/users/true app.Get("/api/users/{isLogin:bool}", func(context context.Context) { isLogin, err := context.Params().GetBool("isLogin") if err != nil { context.StatusCode(iris.StatusNonAuthoritativeInfo) return } if isLogin { context.WriteString(" 已登录 ") } else { context.WriteString(" 未登录 ") } //正则表达式所支持的数据类型 //context.Params().GetBool() //Getxxx() }) app.Run(iris.Addr(":8002"), iris.WithoutServerError(iris.ErrServerClosed)) }
package main import ( "github.com/kataras/iris" "github.com/kataras/iris/context" ) func main() { app := iris.New() //用户模块users //xxx/users/register 注册 //xxx/users/login 登录 //xxx/users/info 获取用户信息 //路由组请求 userParty := app.Party("/users", func(context context.Context) { //处理下一级请求,就是users斜杠后面的 context.Next() }) //路由组下面的下一级请求 //xxx/users/register userParty.Get("/register", func(context context.Context) { app.Logger().Info("用户注册功能") context.HTML("<h1>用户注册功能</h1>") }) //路由组下面的下一级请求 //xxx/users/login userParty.Get("/login", func(context context.Context) { app.Logger().Info("用户登录功能") context.HTML("<h1>用户登录功能</h1>") }) //另一种方式 usersRouter := app.Party("/admin", userMiddleware) //Done方法,表示请求结束 usersRouter.Done(func(context context.Context) { context.Application().Logger().Infof("response sent to " + context.Path()) }) usersRouter.Get("/info", func(context context.Context) { context.HTML("<h1> 用户信息 </h1>") context.Next() //手动显示调用,去调用Done方法 }) usersRouter.Get("/query", func(context context.Context) { context.HTML("<h1> 查询信息 </h1>") }) app.Run(iris.Addr(":8003"), iris.WithoutServerError(iris.ErrServerClosed)) } //另一种方式 //用户路由中间件 func userMiddleware(context iris.Context) { context.Next() }
以上是关于Iris路由和路由组的主要内容,如果未能解决你的问题,请参考以下文章
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段