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. C#索引器学习笔记

    本笔记摘抄自:https://www.cnblogs.com/ArmyShen/archive/2012/08/27/2659405.html,记录一下学习过程以备后续查用. 索引器允许类或者结构的实 ...

  2. Go-结构体,结构体指针和方法

    https://cloud.tencent.com/developer/article/1482382 4.1.结构体 结构体:讲一个或多个变量组合到一起形成新的类型,这个类型就是结构体,结构体是值类 ...

  3. 洛谷P 1427 小鱼的数字游戏

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  4. 反射_python

    一.反射(通过字符串的形式去操作对象中的成员) 1.getattr:获取对象中的字段和方法 2.hasattr:判断对象里面是否有字段或方法 3.setattr:设置对象里面的字段或方法 4.dela ...

  5. pom中<scope></scope>一些理解

    compile:默认值,表示当前依赖包,要参与当前项目的编译,后续测试,运行时,打包provided:代表在编译和测试的时候用,运行,打包的时候不会打包进去test:表示当前依赖包只参与测试时的工作: ...

  6. [转]memory analyzer 使用方法

    [转]http://wensong.iteye.com/blog/1986449 最近一段时间一直在研究热部署,热部署中涉及到一个比较头痛的问题就是查内存泄露(Memory Leak),于是乎在研究热 ...

  7. jQuery实现隔行变色、悬停变色 ( CSS3伪类选择器:nth-child() )

    <title>实现隔行变色</title> <script src="Js/jquery-1.8.0.min.js" type="text/ ...

  8. 创建spring boot 项目

    1.新建Spring Starter Project(需要连接外网) 2.选择web 3.点击完成,生成maven项目 pom文件默认有一些依赖,但是有一个地方报错,<parent>节点报 ...

  9. (原创)SpringBoot入门

    本文章是SpringBoot入门的介绍在这里   我会尽量写一些细节性的东西,我用的是IDEA2016  Tomcat7 JDK1.8 Maven3.3.9 IDEA Tomcat JDK Maven ...

  10. Python调用libsvm

    # -*- coding: utf-8 -*- import os, sys path = r"D:\Program Files (x86)\libsvm-3.22\python" ...