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()
}
Iris路由和路由组的更多相关文章
- CCIE路由实验(6) -- 组播Multicasting
1.组播IGMP的各种情况2.PIM Dense-Mode3.PIM Sparse-Mode4.PIM双向树和SSM5.动态RP之auto-rp6.动态RP之BSR7.Anycast RP8.域间组播 ...
- [水煮 ASP.NET Web API2 方法论](3-2)直接式路由/属性路由
问题 怎么样可以使用更贴近资源(Controller,Action)的方式定义路由. 解决方案 可以使用属性路由直接在资源级别声明路由.只要简单的在 Action 上使用属性路由 RouteAttri ...
- 海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs
海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs 企业简介 武汉海蜘蛛网络科技有限公司成立于2005年,是一家专注于网络新技术研 ...
- ASP.NET没有魔法——ASP.NET MVC 直连路由(特性路由)
之前对Controller创建的分析中,知道了Controller的创建是有两个步骤组成,分别是Controller的类型查找以及根据类型创建Controller实例. 在查询Controller的类 ...
- Angular routing生成路由和路由的跳转
Angular routing生成路由和路由的跳转 什么是路由 路由的目的是可以让根组件按照不同的需求动态加载不同的组件. 根据不同地址,加载不同组件,实现单页面应用. Angular 命令创建一个配 ...
- vue教程3-06 vue路由嵌套(多层路由),路由其他信息
多层嵌套: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- Vue路由获取路由参数
vue路由设置路由参数有2种方式: 1.通过query配置: <router-link :to="{ name:'login',query:{id:1} }">登录&l ...
- System.ArgumentException:路由集合中已存在名为“XXX”的路由。路由名称必须唯一。
软件环境:Visual Studio 2017 + MVC4 + EF6 问题描述:System.ArgumentException:路由集合中已存在名为“XXX”的路由.路由名称必须唯一. 解决办法 ...
- Vue_(Router路由)-vue-router路由的基本用法
vue-router官网:传送门 vue-router起步:传送门 vue-router路由:Vue.js官网推出的路由管理器,方便的构建单页应用 单页应用:Single Page Applicati ...
- vue路由--命名路由
有时我们通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候.你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称. 我们直接在路由下 ...
随机推荐
- ubuntu16.04更换成国内源
一.首先使用自带的vi编辑器 安装完ubuntu后没有默认的root密码,如果要设置root密码需要进行如下步骤: 1 sudo passwd 2 连续输入两次新密码 二.vi编辑器下使用[backs ...
- 两个html页面之间传值
参考网址:https://blog.csdn.net/csdn_ds/article/details/78393564?locationNum=8&fps=1
- PHP目录操作(附封装好的目录操作函数文件)
目录函数库常用API $path='test'; var_dump(is_dir($path));//检测是否为目录 echo '<hr/>'; echo getcwd();//得到当前的 ...
- MySQL的DML语言(增删改)
MySQL的DML语言(增删改) 补充说明,外键:不要使用外键,一切外键概念都在应用层解决. 补充说明,数据库的列,也就是字段名,尽量带上飘符号` 数据库存在的意义:数据存储和数据管理. 数据库:行( ...
- Jungle Roads POJ - 1251 模板题
#include<iostream> #include<cstring> #include<algorithm> using namespace std; cons ...
- 使用VSCode创建简单的Razor Webapp--1.入门
1.下载vscode,安装dotnet core sdk 在cmd中使用命令dotnet --version可以查看当前安装的版本 2.打开vscode,设置语言和扩展 在最左边的工具栏,点击最下面的 ...
- PHP生成登录图片验证码
很久之前写的 感觉登录还挺常用 记录一下. public function makeLoginCodeAction() //生成登录页的验证码 { Header("Content-type: ...
- nginx ip配置反向代理为本地域名
#### gitlab反向代理 server { listen ; server_name gitlab.hp.com; location / { proxy_pass http://192.168. ...
- Vue.js 源码构建(三)
Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下. 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.json 文件,它是对项目的描述文 ...
- Java 并发核心机制
目录 一.J.U.C 简介 二.synchronized 三.volatile 四.CAS 五.ThreadLocal 参考资料