|
ddpost — 控制台里的 Postman
一个在终端里运行的交互式 HTTP 客户端,告别 Postman 的臃肿,拥抱命令行的简洁。
---
简介
ddpost 是一个纯终端界面的 HTTP 请求工具,灵感来自 Postman,但完全运行在命令行中。它支持目录管理请求、多环境变量、.http 文件格式、curl 命令解析、动态变量等功能,适合习惯终端操作的开发者。
数据存储在 ~/.console-postman/<项目名>/ 下,每个项目独立管理,互不干扰。
---
核心特性
1. 目录化管理请求
请求按目录组织,每个目录是一个真实文件夹,每个请求是一个标准的 .http 文件,可以用任何编辑器直接修改。
- ~/.console-postman/
- └── 我的项目/
- ├── 用户管理/
- │ ├── 获取用户列表.http
- │ └── 创建用户.http
- ├── 订单服务/
- │ └── 查询订单.http
- ├── meta.json ← 根级环境变量
- └── environments.json ← 旧版兼容
复制代码
2. 多环境变量系统
支持根级环境变量和目录级环境变量,两级叠加继承:
- 根级环境变量:作用于整个项目,作为基础变量
- 目录级环境变量:作用于当前目录,同名变量会覆盖根级变量
- 每个目录可以创建多个环境(如 dev / staging / prod),独立切换
变量解析链:
- 根级当前环境变量 → 目录当前环境变量(同名覆盖)
复制代码
3. 两种变量语法
| 写法 | 类型 | 说明 | | {{DOMAIN}} | 环境变量 | 从当前环境取值,跨请求共享 | | ${file} | 动态变量 | 执行时临时传入,每次可以不同 |
4. 直接执行 HTTP 请求
支持直接输入 HTTP 请求或 curl 命令并执行:
- > GET http://localhost:8080/api/users
- > POST http://localhost:8080/api/users Content-Type: application/json
- {"name": "test"}
- ---
- > curl -X POST http://localhost:8080/api/users -H "Content-Type: application/json" -d '{"name":"test"}'
复制代码
5. 导入标准格式
支持粘贴 .http 文件内容或 curl 命令,自动解析并保存为请求。
6. 请求历史
自动记录执行历史,支持 ↑ 键回溯命令,跨会话持久化。
7. 删除确认保护
所有删除操作(目录、请求、环境、变量)都有确认提示,防止误删。
---
安装
- npm install -g @chenddcoder/ddpost
复制代码
使用
进入交互界面后:
- ╔ Console Postman ═══════════════════════════════╗
- ║ 2 dirs, 1 requests
- ╚═══════════════════════════════════════════════╝
- 📂 Directories:
- 1 用户管理 (3 req)
- 2 订单服务 (1 req)
- 输入编号进入目录
- ──────────────────────────────────────
- [n=新建目录 d=删除目录 v=环境变量 q=退出]
- >
复制代码
---
命令速查
根视图
| 命令 | 作用 | | <编号> | 进入目录 | | n <名称> | 新建目录 | | d <编号> | 删除目录(有确认提示) | | v | 管理根级环境变量 | | q | 退出 |
目录视图
| 命令 | 作用 | | <编号> | 执行请求 | | <编号> KEY=val | 执行请求并临时覆盖变量 | | n | 交互式新建请求 | | i | 导入请求(HTTP 或 curl) | | d <编号> | 删除请求(有确认提示) | | e <编号> | 编辑请求 | | v | 管理当前目录的环境变量 | | q | 返回根视图 |
环境列表视图
| 命令 | 作用 | | <编号> | 激活环境并进入详情 | | n <名称> | 新建环境 | | d <编号> | 删除环境(有确认提示) | | q | 返回 |
环境详情视图
| 命令 | 作用 | | <编号> | 查看变量值 | | n <key>=<value> | 新建/修改变量 | | d <编号> | 删除变量(有确认提示) | | q | 返回环境列表 |
---
使用示例
- // 创建目录和请求
- n 用户管理
- // 输入编号进入目录
- 1
- n
- // 输入名称: 获取用户列表
- // 输入 Method: GET
- // 输入 URL: http://{{DOMAIN}}/api/users
- // 创建环境变量
- v
- n dev
- n DOMAIN=localhost:8080
- q
- // 执行请求
- 1
- // 使用动态变量
- // 先编辑请求,URL 改为 http://{{DOMAIN}}/api/users?page=${page}
- e 1
- // 修改 URL 后输入 --- 保存
- 1 page=2
复制代码
---
数据存储
- ~/.console-postman/
- └── <项目名>/
- ├── meta.json ← 根级环境变量 + 当前环境 + 上次目录
- ├── history.json ← 请求历史
- ├── history_cmds.txt ← 命令历史(↑ 键回溯)
- ├── environments.json ← 旧版兼容(自动迁移)
- └── <目录名>/
- ├── 请求1.http
- ├── 请求2.http
- └── env.json ← 目录级环境变量
复制代码
---
技术栈
- TypeScript
- Node.js 原生 fetch(无需额外依赖)
- readline/promises 交互式命令行
- 文件系统持久化(JSON + .http 文件)
---
开源地址
https://github.com/chenddcoder/console-postman |