11个版本 (4个重大更新)
0.7.0 | 2024年3月17日 |
---|---|
0.6.1 | 2024年1月21日 |
0.6.0 | 2023年12月23日 |
0.5.3 | 2023年12月22日 |
0.3.5 | 2023年12月20日 |
在 Web编程 中排名第 429
每月下载量 73
19KB
209 代码行
urouter
静态(只读取一次路由列表)的http路由器,用于小型域的路由。
安装
cargo install urouter
编辑 alias.json
(或任何其他JSON文件,检查 --alias-file
选项)并运行 cargo run
alias.json
规范
包含集合数组的JSON文件(或具有一个数组集合字段的集合,带有 --alias-file-is-set-not-a-list
,例如 Nix打包)。
每个集合包含2个必需元素和1个可选元素。
uri
(字符串)- 主机之后的URL(例如,/
,some/cool/path
,不应以/
开头(仅适用于根)alias
(集合)- 具有一个字段的集合url
(字符串)- 重定向到带有HTTP 303 See Other的URLfile
(字符串)- 从路径--dir/file
(其中--dir
是选项(默认:.
,查看--help
)读取文件,并以HTTP 200 OK响应content-type: text/plain
text
(字符串)- 带有HTTP 200 OK的纯文本,内容类型为content-type: text/plain
html
(字符串)- 带有HTTP 200 OK的纯文本,内容类型为content-type: text/html
external
(set) - 使用ureq
HTTP 库下载文件(每次都下载),并使用 HTTP 200 OK 响应下载资源的内容,并从响应中提取content-type
url
(string) - 下载的 URLheaders
(set, optional) - 请求中包含的头部信息
agent
(set, optional) - 必须设置一个字段,可选设置一个regex
(string) - 匹配用户代理 HTTP 头的正规表达式only_matching
(bool, optional, false by default) - 如果为 false,则任何用户代理都可以看到整个别名,如果为 true,则只有与正则表达式匹配的才能看到
数组的集合(仅用于非常具体的解决方案)
{
"alias": [
{
"uri": "/",
"alias": {
"url": "https://somecoolwebsite"
}
}
]
}
alias.json
示例
[
{
"uri": "/",
"alias": {
"url": "https://somecoolwebsite"
}
},
{
"uri": "/",
"alias": {
"file": "somecoolscript"
},
"agent": {
"regex": "^curl/[0-9].[0-9].[0-9]$",
"only_matching": false
}
},
{
"uri": "text",
"alias": {
"text": "sometext"
}
},
{
"uri": "external",
"alias": {
"external": {
"url": "https://somecool.external.link",
"headers": {
"user-agent": "curl/8.6.0"
}
}
}
}
]
为 curl https://url | sh
等脚本创建的用户代理匹配
alias.json
位置
- 通过
--alias_file
传递,将查找此路径,如果文件不存在(或无法访问)将引发恐慌 - 如果 urouter 以特权启动(EUID = 0),则文件为
/etc/urouter/alias.json
- 否则如果
XDG_CONFIG_HOME
已设置,则文件为$XDG_CONFIG_HOME/urouter/alias.json
- 否则如果
$HOME
已设置,则文件为$HOME/.config/urouter/alias.json
- 如果没有匹配任何内容,将引发恐慌并退出
许可证
该项目根据 MIT 许可证 许可。
依赖关系
~22–57MB
~1M SLoC