• go初识iris框架(四) -框架设置操作


    前言

    iris(1)
    iris(2)
    iris(3)

    框架设置操作

    当我们的一个路径是xxx/user/info,xxx/user/login,xxx/user/register的时候,我们发现前面都有一个user,我们如果用/{data:string}这样的话这样导致我们的路径是灵活的,所以我们得用其他方法

    这里我们的路径是以anime为例

    animeParty := app.Party("/animes",func(ctx iris.Context){
    	//处理下一级请求
    	ctx.Next()
    })
    animeParty.Get("/djsy",func(ctx iris.Context){
    	djsyMsg := Anime{
    		Fid:0,
    		FName: "刀剑神域",
    		ZFNumber:0,
    	}
    	ctx.JSON(djsyMsg)
    })
    animeParty.Get("/yls1",func(ctx iris.Context){
    	djsyMsg := Anime{
    		Fid:1,
    		FName: "野良神第一季",
    		ZFNumber:0,
    	}
    	ctx.JSON(djsyMsg)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    Golang中分组处理

    /**
        用户模块users
        xxx/users/register 注册
        xxx/users/login   登陆
        xxx/users/info    获取用户信息
    */
    /**
        路由组请求
    	/users:自定义
    */
    userParty := app.Party("/users",func(ctx iris.Context){
        ctx.Next()
    })
    userParty.Get("/register",func(ctx iris.Context){
        userMsg := []User{
          {Uid: 0,Name: "admin"},
          {Uid: 1,Name: "zhangsan"},
    	}
        ctx.JSON(userMsg)
    })
    
    userParty.Get("/login",func(ctx iris.Context){
        userMsg := []User{
          {Uid: 0,Name: "admin"},
          {Uid: 1,Name: "zhangsan"},
    	}
        ctx.JSON(userMsg)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    这个Party()会返回一个Party结构体对象,其中func()是匿名函数,我们可以定义一个方法来引用方法

    userParty := app.Party("/users",userPartyFunc)
    
    func userPartyFunc(ctx iris.Context){
        ctx.Next()
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    路由中的Done方法

    当你执行完请求执行了Next()方法,就会去执行Done()方法,表示你的请求完成了

    userParty := app.Party("/admin",func(ctx iris.Context){})
    userParty.Done(func(ctx iris.Context){
    	app.Application.Logger().Info("+ctx.Path())
    })
    userParty.Get('/info',func(ctx iris.Context){})
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果你需要进行一些配置

    app.Configure()来进行配置

    //一、通过程序代码对应用进行全局配置
    app.Configure(iris.WithConfiguration(iris.Configuration{
    	//如果设置为true,当人为中断程序时,则不会正常将服务关闭,如果设置为true,需要自己自定义处理
    	DisableInterruptHandler: false,
    	//该配置项表示更正并将请求的路径重定向到已注册的路径
    	//比如:如果请求/home/但找不到比Route的处理程序,然后路由器检查/home处理程序是否存在,如果是,permant)将客户端重定向到正确的路径/home。
    	//默认为false
    	DisablePathCorrection: false,
    	EnablePathEscape: false,
    	FireMethodNotAllowed: false,
    	DisableBodyConsumptionOnUnmarshal: false,
    	DisableAutoFireStatusCode: false,
    	TimeFormat: "Mon.02 Jan 2006 15:04:05 GMT",
    	Charset: "utf-8",
    }))
    
    //二、通过读取tml配置文件读歌服务配置
    //注意:要在rUn方法运行之前执行
    app.Configure(iris.WithConfiguration(iris.T0ML(filename:"tml-path"))
    //三、通过读取yam1配置文件读取服务配置
    
    //同样要在run方法运行之前执行
    app.Configure(iris.WithConfiguration(iris.YAML(filename:"yml-path"))
    //四、通过j50n配置文件进行应用配置
    file,- =os.open(name:"json-path")
    defer file.Close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    代码随想录刷题记录 day32无重叠区间 划分字母区间 合并区间
    硬件设计专题-DCDC电路起源
    Spring基础(七):使用外部属性配置文件
    ARM 学习笔记3 STM32G4 定时器相关资料整理
    NPS之Socks流量分析以及未授权复现
    正则表达式定义
    Gin 中使用 Cookie,Session
    Django DRF 自动生成接口文档
    深入理解 Istio 流量管理的超时时间设置
    WindowsAPI 进程和线程相关说明
  • 原文地址:https://blog.csdn.net/yasinawolaopo/article/details/132060171