📜  角度路由 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:11:57.122000             🧑  作者: Mango

角度路由 - Shell-Bash

介绍

角度路由是一个用于 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,同时也定义了对应的处理函数 foobar。在实际使用中,我们可以使用 ./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 处理函数。

路由生命周期

角度路由的路由生命周期指的是一个路由请求的处理过程中的生命周期。路由生命周期分为三个阶段:

  1. 路由前置处理函数
  2. 路由处理函数
  3. 路由后置处理函数
路由前置处理函数

路由前置处理函数在调用路由处理函数之前被调用。前置处理函数可以用来进行一些防护、鉴权等安全性质的操作。比如:

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 脚本的结构,使代码更加优雅、灵活。同时,路由生命周期也可以让我们更好地控制整个程序的运行过程,保证了安全性和稳定性。