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路由和路由组的更多相关文章

  1. CCIE路由实验(6) -- 组播Multicasting

    1.组播IGMP的各种情况2.PIM Dense-Mode3.PIM Sparse-Mode4.PIM双向树和SSM5.动态RP之auto-rp6.动态RP之BSR7.Anycast RP8.域间组播 ...

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

    问题 怎么样可以使用更贴近资源(Controller,Action)的方式定义路由. 解决方案 可以使用属性路由直接在资源级别声明路由.只要简单的在 Action 上使用属性路由 RouteAttri ...

  3. 海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs

    海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs 企业简介 武汉海蜘蛛网络科技有限公司成立于2005年,是一家专注于网络新技术研 ...

  4. ASP.NET没有魔法——ASP.NET MVC 直连路由(特性路由)

    之前对Controller创建的分析中,知道了Controller的创建是有两个步骤组成,分别是Controller的类型查找以及根据类型创建Controller实例. 在查询Controller的类 ...

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

    Angular routing生成路由和路由的跳转 什么是路由 路由的目的是可以让根组件按照不同的需求动态加载不同的组件. 根据不同地址,加载不同组件,实现单页面应用. Angular 命令创建一个配 ...

  6. vue教程3-06 vue路由嵌套(多层路由),路由其他信息

    多层嵌套: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. Vue路由获取路由参数

    vue路由设置路由参数有2种方式: 1.通过query配置: <router-link :to="{ name:'login',query:{id:1} }">登录&l ...

  8. System.ArgumentException:路由集合中已存在名为“XXX”的路由。路由名称必须唯一。

    软件环境:Visual Studio 2017 + MVC4 + EF6 问题描述:System.ArgumentException:路由集合中已存在名为“XXX”的路由.路由名称必须唯一. 解决办法 ...

  9. Vue_(Router路由)-vue-router路由的基本用法

    vue-router官网:传送门 vue-router起步:传送门 vue-router路由:Vue.js官网推出的路由管理器,方便的构建单页应用 单页应用:Single Page Applicati ...

  10. vue路由--命名路由

    有时我们通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候.你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称. 我们直接在路由下 ...

随机推荐

  1. R 分析回归(一元回归)

    x <- c(,,,,,,,,,) # build X(predictor) y <- c(,,,,,,,,,) # build Y(dependent variable) mode(x) ...

  2. java课后动手动脑作业

    public class Suiji { public long a=12345L;//定义long类型的a,b,c变量 public long c=12345L; public long m=456 ...

  3. C 库函数 - sprintf()

    C 库函数 - sprintf() C 标准库 - <stdio.h> 描述 C 库函数 int sprintf(char *str, const char *format, ...) 发 ...

  4. 第十八次CSP认证游记 | 2019.12.15

    CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...

  5. php7 安装redis拓展

    配置之前应该是环境已经搭好了,phpinfo的页面可以加载出来.   使用git clone下载git上的phpredis扩展包 git clone  https://github.com/phpre ...

  6. 【分享】一款特别轻量的gif生成工具

    github链接:https://github.com/NickeManarin/ScreenToGif/releases/tag/2.19.3 超级好用!支持多种方式(摄像头也可√)录制gif

  7. Django Form组件的扩展

    Form组件扩展 1.用Form组件自带的正则扩展 通过Django内置的字段:Validators自定义验证规则 方式一: from django.forms import Form from dj ...

  8. USACO06DEC 牛奶模式

    题意:求最长的可重叠的 K重复子串 的长度 考虑二分长度s,转化为验证性问题. 对SA进行分组.保证组内Height最小为s.这样在组内RMQ就可以任意了,因为RMQ一定是大于S的. 只要组内元素个数 ...

  9. PP: Triple-shapelet networks for time series classification

    Problem: time series classification shapelet-based method: two issues 1. for multi-class imbalanced ...

  10. 白面系列 redis

    redis是Key-Value数据库,和Memcached类似.value可以是多种类型,如Strings, Lists, Hashes, Sets 及 Ordered Sets等. redis一个牛 ...