12个版本 (6个破坏性版本)
新 0.17.0 | 2024年8月18日 |
---|---|
0.16.0 | 2024年6月30日 |
0.15.1 | 2024年5月3日 |
0.14.0 | 2024年4月23日 |
0.11.3 | 2024年4月15日 |
#48 in 网络编程
每月628次下载
490KB
9K SLoC
ATAC ⚔📩
目录
描述
ATAC 可能是一个 Arguably Terminal API Client。它基于Postman、Insomnia或甚至Bruno等知名客户端,但无需任何特定的图形环境即可在终端中运行。
ATAC 的理念是永远免费、无需账户和离线。
如何安装
使用 cargo 安装
[!IMPORTANT] 首先,请确保您的 Rust 版本至少为 1.79
只需使用
cargo install atac
从 Arch 安装
您可以使用 pacman 来安装
pacman -S atac
使用 Homebrew 安装
只需使用
brew tap julien-cpsn/atac
brew install atac
从 Fedora copr 安装
只需使用
dnf copr enable joxcat/atac
dnf install atac
二进制文件
最新版本的二进制文件可以在 这里 找到
[!IMPORTANT] 请记住,您需要从终端运行它。例如,您可以将二进制文件添加到您的 PATH 中。由于它需要 CLI 参数,因此您无法像其他图形应用程序那样运行它。
[!TIP] 注意 macOS 用户。下载二进制文件后,您可能需要运行以下命令
sudo xattr -rd com.apple.quarantine ~/bin/atac
(修改以反映atac
所在的路径)。
自行编译
[!IMPORTANT] 首先,请确保您的 Rust 版本至少为 1.79
只需克隆仓库并使用
cargo run
cargo run -- -h
[!TIP] 构建 最新版本
cargo build --release
功能
当前
功能 | ATAC | Postman | Insomnia |
---|---|---|---|
管理集合与请求 | ✅ | ✅ | ✅ |
HTTP 客户端 | ✅ | ✅ | ✅ |
方法 | ✅ | ✅ | ✅ |
- GET | ✅ | ✅ | ✅ |
- POST | ✅ | ✅ | ✅ |
- PUT | ✅ | ✅ | ✅ |
- PATCH | ✅ | ✅ | ✅ |
- DELETE | ✅ | ✅ | ✅ |
- HEAD | ✅ | ✅ | ✅ |
- OPTIONS | ✅ | ✅ | ✅ |
身份验证 | 部分 | ✅ | ✅ |
- 基本身份验证 | ✅ | ✅ | ✅ |
- 携带令牌 | ✅ | ✅ | ✅ |
- JWT, 摘要, OAuth1-2, AWS | ❌ 🔜 | ✅ | ✅ |
头部 | ✅ | ✅ | ✅ |
主体 | ✅ | ✅ | ✅ |
- 多部分表单 | ✅ | ✅ | ✅ |
- URL 编码表单 | ✅ | ✅ | ✅ |
- 文件 | ✅ | ✅ | ✅ |
- 纯文本 | ✅ | ✅ | ✅ |
- JSON, XML, HTML, JavaScript | ✅ | ✅ | ✅ |
完整响应 | ✅ | ✅ | ✅ |
- 状态码 | ✅ | ✅ | ✅ |
- Cookies | ✅ | ✅ | ✅ |
- 头部 | ✅ | ✅ | ✅ |
- 持续时间 | ✅ | ✅ | ✅ |
脚本 | ✅ | 部分 | ❌ |
- 预请求脚本 | ✅ | ❌ | ❌ |
- 请求后脚本 | ✅ | ✅ | ❌ |
异步请求 | ✅ | ✅ | ✅ |
每个请求的设置 | ✅ | ✅ | ✅ |
- 使用代理 | ✅ | ✅ | ✅ |
- 允许重定向 | ✅ | ✅ | ✅ |
- 存储Cookies | ✅ | ✅ | ✅ |
导出到其他语言 | ❌ 🔜 | ✅ | ❌ |
WebSocket客户端 | ❌ 🔜 | ✅ | ✅ |
GraphQL | ❌ 🔜 | ✅ | ✅ |
gRPC | ❌ 🔜 | ✅ | ✅ |
MQTT | ❌ 🔜 | ✅ | ❌ |
免费 | ✅ | 依赖 | 依赖 |
轻量、快速和高效 | ✅ | ❌ | ❌ |
数据存储 | 您自己的可提交、可读和有版本的文件(JSON或YAML) | 与您的账户绑定 | 与您的账户绑定 |
离线 | ✅ | ❌ | ❌ |
实时协作 | ❌(未计划) | ✅ | ✅ |
完整命令行使用 | ✅ | 部分 | :w |
环境文件和变量 | ✅(可提交、可读和有版本) | ✅ | ✅ |
查看选项 | ✅ | ✅ | ✅ |
全局配置文件 | ✅ | ✅ | ✅ |
- HTTP/HTTPS代理 | ✅ | ✅ | ✅ |
- 禁用CORS | ✅ | ❌ | ❌ |
- 切换语法高亮 | ✅ | ❌ | ❌ |
Postman v2.1.0导入 | ✅ | ✅ | ✅ |
OpenAPI导入 | ❌ 🔜 | ✅ | ✅ |
待办事项 v1.0.0
-
要添加
- 记录整个代码
- 取消挂起的请求
- 在TUI中显示错误通知
- 请求主体语法高亮
- 将请求导出到其他代码格式(raw、curl、PHP、JS、Rust、...)
- OpenAPI & Insomnia导入
-
要改进
- 编辑Cookies
- 环境文件变量自动完成
- 在主体编辑器中处理"home"和"end"键(https://github.com/Julien-cpsn/ATAC/issues/93)
- 管理多部分Content-type头部(目前自动生成) https://github.com/seanmonstar/reqwest/issues/2259
- 从syntect转到tree-siter(因为syntect会导致一点内存泄漏)
-
要修复
- 查询参数错误
待办事项 v2.0.0
- 要添加
- WebSocket请求
- 可能是GraphQL请求
- 可能是MQTT请求
- 可能是gRPC请求
想法(稍后考虑)
- 基本URL属性和集合上的授权
- VScode插件查看和发送请求
- Scoop安装
文档
以下是文档: https://atac.julien-cpsn.com/
如果您认为缺少什么,请贡献!
其他
Vim 快捷键绑定
您可以在这里了解更多: https://github.com/Julien-cpsn/ATAC/releases/tag/v0.14.0
NeoVim 集成
感谢@NachoNievaG,您可以在nvim中拥有一个ATAC浮动窗口 https://github.com/NachoNievaG/atac.nvim
技术细节
测试平台
- 控制台主机
- Windows 11(专业版)
- WSL2 Debian 12
- Windows 10(专业版)
- Windows 8.1(N版)
- Ubuntu桌面终端
- Ubuntu 23.04 64位
- Ubuntu 17.10
- Pop!_OS 20.04
- (Arch, Manjaro) KDE Konsole
- (Arch, NixOS) Kitty
- Linux Mint
- (OpenSuse) Alacritty
- (Chrome OS) Crostini
- Apple
- macOS Monterey 12.7.1(Intel芯片)
- macOS Sonama 14.4(M1 Max,Apple硅芯片)
(列表来自 这里)
依赖项
类别/库 | 版本 | 原因 |
---|---|---|
请求 | ||
reqwest & reqwest cookie store | 0.12.5 & 0.8.0 | 发送请求 |
TUI | ||
ratatui | 0.28.0 | 终端UI框架 |
crokey | 1.1.0 | 用于解析、使用键绑定文件和一些实用工具 |
tui-big-text | 0.6.0 | 显示大文本。仅用于主页上显示ATAC。 |
tui-tree-widget | 0.22.0 | 显示树形列表。用于显示集合。 |
tui-textarea | 0.6.1 | 具有许多功能的文本区域。用于编辑请求体。 |
throbber-widgets-tui | 0.6.0 | 显示加载UI元素。用于请求待处理时。 |
ratatui-image | 1.0.5 | 显示响应图像。 |
image | 0.25.2 | 解码图像。 |
主要功能 | ||
syntect | 5.2.0 | 语法高亮 |
serde (serde_json, serde-yaml) | 1.0.208 (1.0.125, 0.9.34) | 将应用数据序列化/反序列化为文件 |
jsonxf | 1.1.1 | 美化打印JSON |
toml | 0.8.19 | 序列化/反序列化应用配置文件 |
boa_engine | 0.19.0 | 创建JavaScript运行时。用于预请求和后请求脚本 |
我的分支 postman_collection | 0.2.3 | 反序列化Postman集合文件 |
curl-parser | 0.3.1 | 解析cURL请求文件 |
clap | 4.5.16 | 命令行参数解析器 |
dirs | 5.0.1 | 使用系统文件 |
arboard | 3.4.0 | 将响应体复制到剪贴板 |
Async | ||
tokio | 1.39.3 | 处理异步请求 |
parking_lot | 0.12.3 | 比RwLock和Mutex更小、更快、更灵活的实现。到处使用。 |
工具 | ||
strum | 0.26.3 | 枚举设施 |
lazy_static | 1.5.0 | 允许更灵活的常量。主要用于在各个地方访问CLI参数 |
rayon | 1.10.0 | 允许在for循环中使用多个线程 |
nestify | 0.3.3 | 用于嵌套结构定义 |
walkdir | 2.5.0 | 递归检索文件 |
snailquote | 0.3.1 | 取消转义字符串 |
indexmap | 2.4.0 | 有序哈希表。用于在环境中保留文件值的顺序 |
thiserror | 1.0.63 | 创建自定义错误 |
anyhow | 1.0.86 | 可以包含任何错误的Result |
clap-verbosity-flag | 2.2.1 | 将详细程度标志添加到CLI |
clap_complete | 4.5.18 | 生成完成文件 |
clap_mangen | 0.2.23 | 生成手册页 |
base64 | 0.22.1 | 编码认证。 |
regex | 1.10.6 | 正则表达式。用于解析请求URL |
chrono | 0.4.38 | 时间工具 |
uuid | 1.10.0 | UUID生成器 |
跟踪/日志 | ||
tracing | 0.1.40 | 记录事件 |
tracing-subscriber | 0.3.18 | 实现和组合跟踪订阅者的工具 |
tracing-log | 0.2.0 | 与tracing兼容的日志crate |
reqwest-tracing | 0.5.3 | reqwest-middleware的正则表达式中间件实现 |
reqwest-middleware | 0.3.3 | reqwest的包装器,允许客户端中间件链 |
二进制大小
二进制文件大小从约4.5 MB增加到约7 MB,取决于平台。我尽量保持它尽可能小。
贡献者
维护者
打包者
- Cargo, Brew - @julien-cpsn
- Arch - @orhun
- Fedora copr - @joxcat
星标历史
许可
此项目的MIT许可证可在此处查看
依赖项
~45–66MB
~1M SLoC