zoukankan      html  css  js  c++  java
  • 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()
    }
    

      

      

  • 相关阅读:
    纯MATLAB版本 SIFT代码
    hadoop2.4集群的搭建
    hadoop2.4的伪集群的搭建
    linux 下的ssh免密登陆设置
    linux 下的常用操作命令
    linux中的IP地址的修改
    使用idea创建maven多模块项目
    Hudson的使用
    创建线程的几种方法
    idea添加内存
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12262447.html
Copyright © 2011-2022 走看看