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()
}

  

  

原文地址:https://www.cnblogs.com/yzg-14/p/12262447.html

时间: 2024-07-31 23:51:55

Iris路由和路由组的相关文章

路由的几个基本概念-直连路由/网关路由/主机路由/网络路由/动态路由/静态路由/默认路由

1.动态路由/静态路由 动态路由 路由选择器自动共享路由信息 自动构造路由表,需要一个路由协议,如RIP或OSPF 静态路由 路由选择器不共享路由信息(单方向路由) 手工构造路由表 2.直连路由/网关路由(间接路由) 其区别在于,发往直连路由的设备中不但具有指明目的端的I P地址,还具有其mac地址. 当报文被发往一个间接路由时,I P地址指明的是最终的目的地,但是mac地址指明的是网关(即下一跳路由器). 3.主机路由/网络路由 直连路由和网关路由是由下一跳区分的,而主机路由和网络路由是由目的

AngularJS之基础-5 路由(定义路由、使用路由)、自定义指令(Directive)

一.定义路由 ng-view - AngularJS 支持通过在单页面上的多个视图的单页应用 - ng-view 标记只是简单地创建一个占位符 - 使用 ng-template - 创建使用script标签的HTML视图 - 使用 - 定义类型作为主模块中 ng-template 的脚本块 $routeProvider - 映射相应的HTML页面或ng-template - 附加一个控制器使用相同键的服务   - 注意: - 需要angular-route.js脚本文件的引用 二.使用路由 锚点

网络基础--静态路由+动态路由

说明:在用IP标示各个网络节点后,如果让相隔多个网络节点的两节点通信,需要"中间人"牵线,得一步一步告示某节点数据,要去对端节点一步步怎么走. 静态路由:手工配置静态路由信息,在转发具有匹配目的地址的分组时能够根据路由信息使用专线接口或下一跳IP地址进行转发. 优点:配置简单,占用系统资源少 缺点:大规模网络中配置繁琐,且缺乏灵活性,网络拓扑变更时,路由信息需要手工调整. 动态路由:利用算法和协议,分享和动态学习路由信息 优点:实时性,灵活性,精确性 缺点:资源消耗大,维护成本高 RI

[水煮 ASP.NET Web API2 方法论](3-2)直接式路由/属性路由

问题 怎么样可以使用更贴近资源(Controller,Action)的方式定义路由. 解决方案 可以使用属性路由直接在资源级别声明路由.只要简单的在 Action 上使用属性路由 RouteAttribute,然后传一个相关路由模板就可以.属性路由与集中式路由在路由模板含义上基本是一样的,所有路由参数应该使用花括号,同时要与使用的 Action 相匹配.直接式路由支持默认路由,可选参数,约束.详细分析请往下走. 1 [Route("api/teams/{id}")] 2 public

高级静态路由之路由过滤(一)

一.说明 1.ip route命令 ip route [dest-network] [mask] {next-hop address | exit interface | ip-address]} [administrative distance] [permanent] dest-network:目的网络 mask:目的网络子网掩码 next-hop address:去往目的网络的下一跳ip地址 exit interface:去往目的网络的出站接口 administrative distanc

静态路由--------默认路由和路由汇总

前言:默认路由和路由汇总的存在都是为了极大的简化路由器的路由表. 1>在给路由器添加路由时,子网掩码中1的位数越少,该条路由涵盖的网络越多.那么,极限是什么呢?就是网络地址和子网掩码都为零,如下所示配置: Router(config) #ip route 0.0.0.0 0.0.0.0 10.0.0.2 这就意味着到任何网络下一跳转发给10.0.0.2.网络地址和子网掩码均为零的路由就是默认路由. 2>通过合理地规划IP地址即通过将连续的IP地址指派给物理位置较为集中的网络,在路由器上配置路由

vue路由获取路由参数

vue路由设置路由参数有2种方式: 1.通过query配置: <router-link :to="{ name:'login',query:{id:1} }">登录</router-link> 通过query配置的路径显示如下: 2.通过params配置: <router-link :to="{ name:'register',params:{'name':'San'} }">注册</router-link> 通过qu

第七课 路由之路由注册

1 路由注册 定义/概念: 例子: (1)动态方法 //Route::get('a/:id/:name/','admin/admin/index'); //Route::get('test','index/index/index'); //Route::get('hello', 'index/hello'); Route::get('test/:id/:name','index/index/index'); //Route::get('test/:name','admin/admin/index

Angular routing生成路由和路由的跳转

Angular routing生成路由和路由的跳转 什么是路由 路由的目的是可以让根组件按照不同的需求动态加载不同的组件. 根据不同地址,加载不同组件,实现单页面应用. Angular 命令创建一个配置好路由的项目 命令创建项目 ng new demo02 --routing 安装依赖 npm install 启动项目 ng serve --open 与没有创建路由的项目比较 创建路由项目的文件比没有创建路由项目的文件多了一个 app-routing.module.ts 文件. 然后在 app.

静态路由实现路由负载分担

静态路由简介 扫描二维码关注微信公众号:网络民工 获取更多内容静态路由是一种需要管理员手工配置的特殊路由.静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和更新路由.但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置.静态路由有5个主要的参数:目的地址和掩码.出接口和下一跳.优先级. 使用静态路由的好处是配置简单.可控性高,当网络结构比较简单时,只需配置静态路由就可以使网络正常工作.在复杂网络环境中,还可以通过配置静态路由改进网络的性能,并且可以为重要的应用