📅  最后修改于: 2023-12-03 15:11:57.122000             🧑  作者: Mango
角度路由是一个用于 Bash 环境下的命令行路由工具,它可以让你方便地定义路由规则,以便更好地组织 Shell 脚本的结构。角度路由提供了灵活的路由匹配方式,可以使用正则表达式、通配符等方式来匹配路由对应的处理函数。同时,角度路由还提供了很多扩展的功能,比如路由前置、路由后置处理函数等等,可以更好地帮助你实现复杂的 Shell 脚本功能。
角度路由可以使用 curl
命令来安装,简单方便:
curl -o /usr/local/bin/router https://raw.githubusercontent.com/Angel-Luo/angle-router/master/router
chmod +x /usr/local/bin/router
以下是角度路由的使用示例:
#!/usr/bin/env bash
source /usr/local/bin/router
# 给路由定义前置处理函数
router_global_before() {
echo "Route match, router_global_before was called!"
}
# 给路由定义后置处理函数
router_global_after() {
echo "Route match, router_global_after was called!"
}
# 定义路由对应的处理函数
foo() {
echo "foo route was triggered!"
}
bar() {
echo "bar route was triggered!"
}
# 添加路由规则
route add '^/foo/?$' foo
route add '^/bar/?$' bar
# 触发路由
router_dispatch "$@"
在上面的示例中,我们定义了两个路由规则 /foo
和 /bar
,同时也定义了对应的处理函数 foo
和 bar
。在实际使用中,我们可以使用 ./example.sh /foo
或 ./example.sh /bar
来触发对应的路由,此时会打印出对应路由的处理函数的内容。
路由匹配指的是如何匹配路由规则。角度路由支持多种匹配方式,具体方式如下:
可以使用字符串直接匹配路由规则,比如:
route add '/foo' foo
此时如果有 /foo
的请求,则会触发 foo
处理函数。
可以使用 *
通配符来匹配路由规则,每个 *
可以代表一个或多个字符,比如:
route add '/f*' foo
/foo
, /f123
, /fabc
等都会匹配到 /f*
规则对应的 foo
处理函数。
使用正则表达式匹配路由规则,比如:
route add '^/foo/[0-9]*$' foo
此时 /foo/123
匹配规则,将触发 foo
处理函数。
角度路由的路由生命周期指的是一个路由请求的处理过程中的生命周期。路由生命周期分为三个阶段:
路由前置处理函数在调用路由处理函数之前被调用。前置处理函数可以用来进行一些防护、鉴权等安全性质的操作。比如:
router_global_before() {
echo "Route match, router_global_before was called!"
# 鉴权操作,未授权则退出
if [ "$AUTHORIZED_USER" != "admin" ]; then
echo "401 Unauthorized"
exit 1
fi
}
路由处理函数是执行路由匹配到的函数。它是路由生命周期的核心,也是处理函数真正要做的操作。
路由后置处理函数在调用路由处理函数之后被调用。后置处理函数一般用于清理工作,比如关闭文件句柄等等,可以保证程序运行的稳定性。
到这里,我们已经介绍了角度路由在 Shell-Bash 环境下的使用方法和基本原理。角度路由可以大大简化 Shell 脚本的结构,使代码更加优雅、灵活。同时,路由生命周期也可以让我们更好地控制整个程序的运行过程,保证了安全性和稳定性。