开发工具CLI【免费下载链接】postingThe modern API client that lives in your terminal.项目地址https://gitcode.com/gh_mirrors/po/posting点击查看免费下载Posting 是一个运行在终端TUI里的现代化 API 客户端它把请求编辑、发送、响应查看、集合管理与环境变量等功能全部收敛到命令行界面中。本文以 docs/guide/index.md 为主干结合仓库源码完整讲解 Posting 在 MacOS、Linux、Windows 上的安装方式、compact/standard两套界面风格以及一条纯键盘驱动的“创建 POST 请求 → 发送 → 查看响应 → 保存”完整工作流读完你即可在几秒钟内装好并用它替代常用的图形化 API 调试工具。一、安装uv 与 pipx 两种受支持方式Posting 面向 Python 3.11见 pyproject.toml 的requires-python 3.11但官方推荐的安装方式完全不需要你手动准备 Python 环境。官方文档给出的核心原则是两种受支持的方式都会把 Posting 安装到全局的隔离环境中不要使用pip直接安装。1.1 使用 uv推荐毫秒级完成uv是 Astral 提供的单一 Rust 二进制工具专门用于安装 Python 应用速度远快于同类工具。用uv安装 Posting 时连 Python 解释器本身都无需预装——uv会在需要时自动拉取# MacOS/Linux 上快速安装 uv curl -LsSf https://astral.sh/uv/install.sh | sh # 安装 Posting如系统缺少 Python 3.12会自动快速安装 uv tool install --python 3.12 posting # 运行 Posting postinguv还可通过 Homebrew、Cargo、Winget、pipx 等方式安装详见 uv 官方的安装指南。一个对脚本用户很有价值的特性是uv可以方便地往 Posting 的运行环境里额外安装 Python 包这些包随后可以直接在 pre-request / post-response 脚本中使用这让 Posting 的脚本能力对应 docs/guide/scripting.md可以自由扩展而不受内置依赖限制。1.2 使用 pipx如果你更习惯 pipx也可以用它安装pipx install postingpipx 同样会把 Posting 装进独立的虚拟环境避免污染系统 Python。1.3 为什么不支持 Homebrew / 不要用 pip仓库里明确标注Homebrew 安装不被支持Posting 的某些 Rust 与 C 依赖在 Homebrew 编译场景下可能耗时超过 10 分钟而使用uv时安装时间以毫秒计使用 pipx 也只需几秒。文档中的安装说明已被注释掉的 Homebrew 配方brew install darrenburns/homebrew/posting也印证了这一点该路径需要编译 Rust 依赖并不属于受支持的安装渠道。从源码看pyproject.toml 中通过[project.scripts]把posting命令绑定到posting.__main__:cli即安装后终端里的posting命令实际进入 src/posting/main.py 定义的 Click 命令行入口。二、选择你喜欢的 UI 风格compact 与 standardPosting 内置两套“间距”模式standard默认内容周围带额外的内边距与边框视觉层次更分明compact去掉内边距和边框使用更紧凑的布局适合在较小终端里追求信息密度。2.1 临时切换与主题预览无需改配置文件即可随时体验两种风格按下ctrlp打开命令面板输入spacing回车即可切换间距模式同一个命令面板里还可以预览并切换不同主题。仓库中的视频 docs/assets/compact-mode-and-themes.mp4 直观展示了紧凑模式与主题切换的效果。2.2 永久生效写入配置文件如果希望每次启动都使用同一套设置需要修改 Posting 的配置文件。先用命令面板中的posting locate config找到配置文件的存放位置然后写入spacing: compact theme: theme-name从源码看spacing是 src/posting/config.py 中Settings的一个字段类型被约束为Literal[standard, compact]默认值是standardtheme字段默认值为galaxy见 src/posting/config.py。也就是说任何非法的spacing值都会被 pydantic 校验拦截。另外两点与主题相关的配置值得注意同样定义在 src/posting/config.pyload_user_themes控制是否从主题目录加载用户自定义主题load_builtin_themes控制是否加载内置主题——把两者设为false可以精确收窄主题候选集。2.3 配置文件到底在哪里配置文件路径由 src/posting/locations.py 决定遵循 XDG 规范落在系统配置目录下的posting/config.yaml如 Linux 上的~/.config/posting/config.yaml。posting locate config子命令的实现见 src/posting/main.py它同时支持posting locate collection与posting locate themes分别打印默认集合目录与主题目录。配置加载逻辑在 src/posting/config.py 的settings_customise_sources中若配置文件存在则把 YAML 文件作为配置源插入优先级高于环境变量与.env也可以借助环境变量POSTING_CONFIG_FILE指定一个非默认的配置文件路径。除spacing/theme外这份 YAML 还支持响应美化、聚焦行为、SSL 证书、pager/editor、keymap 重映射等大量配置项详见 docs/guide/configuration.md。三、快速上手从零构造一个 POST 请求下面以一个向 JSONPlaceholder 模拟 API 发送 POST 请求创建用户的例子完整走一遍 Posting 的核心工作流。这套流程以键盘操作为主鼠标也可用核心快捷键如下表操作快捷键打开命令面板ctrlp切换方法下拉框ctrlt随后直接按方法下划线字母选择焦点跳到 URL 栏ctrll进入/退出 Jump 模式ctrlo发送请求ctrlj全局生效altenter需终端支持 Kitty 键盘协议保存请求ctrls3.1 集合Collection与请求文件集合本质上就是一个目录目录里存放 Posting 保存的请求。如果你直接启动 Posting 而不指定集合创建的请求会存进名为default的集合——这是 Posting 在文件系统上预留的目录属于“全局”集合与你启动 Posting 时所在的工作目录无关相关目录定位逻辑见 src/posting/locations.py--collection为空时由 src/posting/main.py 自动回退到默认集合。对临时请求来说默认集合够用但每个项目最好有独立集合方便纳入版本控制。创建一个新集合只需新建目录并传给 Postingmkdir my-collection posting --collection my-collection之后所有新建请求都会保存为my-collection目录下的 YAML 文件扩展名为.posting.yaml文件后缀常量FILE_SUFFIX .posting.yaml与文件名生成逻辑slugify见 src/posting/save_request.py。启动后屏幕左侧是集合浏览器右下角会显示my-collection。仓库自带的示例集合 tests/sample-collections/jsonplaceholder 展示了典型结构集合目录下按资源分组每个请求一个 YAML 文件甚至可以通过scripts.on_request字段挂载请求前脚本。3.2 把方法设为 POST刚启动时没有打开任何请求界面看起来比较空。按下ctrlt打开请求方法下拉框每个方法名中带下划线的字母就是快速选择该方法的按键要发 POST 请求直接按p即可选中。源码层面方法类型被约束为GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS见 src/posting/collection.py。3.3 设置请求 URL用tab/shifttab可以在各控件间前后移动焦点因此从方法选择器按一次tab就能到达 URL 栏更快的办法是随时按ctrll直接聚焦 URL 栏。然后输入https://jsonplaceholder.typicode.com/usersPosting 的 URL 栏会在输入时对 URL 的各部分进行高亮着色方便发现拼写错误它还会自动补全你此前用过的域名。例如之后想请求https://jsonplaceholder.typicode.com/posts只需输入json并在弹出的补全菜单中选中对应 URLURL 补全与语法高亮分别由 src/posting/widgets/request/url_bar.py 与 src/posting/highlight_url.py 实现域名候选来自 src/posting/suggesters.py完整的 URL 解析协议自动补全、路径参数替换等见 src/posting/urls.py。3.4 添加 JSON Body按ctrlo进入jump mode再按w跳到 “Body” 标签——jump mode 可以让你跳过多次tab快速在 UI 各处移动。此时焦点停在标签栏上按j或down把光标下移到下拉框按enter展开下拉框选择Raw (json, text, etc.)再按j或down进入下方的文本区输入或粘贴{ name: John Doe, username: johndoe, email: john.doeexample.com }注意文本区右下角已经预选了 JSON 作为内容类型这意味着 Posting 会自动启用 JSON 语法高亮并且在发送请求时自动为你插入Content-Type: application/json请求头。这一点在仓库的示例请求文件中可以得到印证——tests/sample-collections/jsonplaceholder/users/create.posting.yaml 里body.content_type: application/json与headers中的Content-Type: application/json同时存在。3.5 查看快捷键按下 F1现在是个好时机记住在任意控件上按f1可以查看该控件支持的完整快捷键列表。文本区控件尤其丰富支持撤销/重做等操作。如果你对默认键位不满意可以在配置文件的keymap一节重映射按键例如把“发送请求”改为ctrlrkeymap: send-request: ctrlrkeymap字段在 src/posting/config.py 中定义为“绑定 ID 到键组合”的字典键位书写格式ctrlX表示 ctrlshiftx、多个键用逗号分隔、函数键写作f1等详见 docs/guide/keymap.md。3.6 发送请求按ctrlj发送请求——这个快捷键全局生效不必聚焦在某个特定控件上。如果你的终端支持 Kitty 键盘协议altenter也可以发送请求。四、查看与操作响应响应会显示在 UI 主体区域。按ctrlo进入 jump mode再按a跳到响应的Body标签然后按j或down进入响应正文。这个文本区针对快速浏览做了大量优化文本选择按住shift用方向键Vim 用户可用hjkl移动光标选择或用鼠标点击拖拽复制按y或c复制选中文本未选中任何文本时整个响应体会被复制。4.1 Vim 风格按键响应文本区支持部分 Vim 风格的快捷键按v进入 visual 模式无需一直按住shift即可用hjkl选择文本光标位于某个括号上时按%跳到匹配的括号按w跳到下一个单词按b跳到上一个单词。建议多尝试以发现全部支持的能力确实缺失的功能可以在项目的 GitHub Discussions 中发起讨论对应项目地址见 pyproject.toml。4.2 用外部编辑器 / 分页器打开响应响应可以交给外部程序打开顺序依次读取以下环境变量$EDITOR/$POSTING_EDITOR定义编辑器命令$POSTING_PAGER/$POSTING_PAGER_JSON定义分页器命令。例如把$POSTING_PAGER_JSON设为fx当焦点在响应文本区时按对应的打开分页器快捷键响应就会被送到fx这个 JSON 查看器里渲染。这背后的配置项在 src/posting/config.pypager默认取$PAGERpager_json专门用于“能推断出内容为 JSON”的场景如编辑器语言是 JSON或响应 Content-Type 表明是 JSONeditor默认取$EDITOR当pager_json未设置时会回退到pager。4.3 保存请求最后按ctrls把请求保存到磁盘在弹出表单中填写名称等信息按enter或ctrln写入。一个实用技巧是——请求可以保存到子文件夹在保存表单的Path in collection字段中直接包含/Posting 会自动创建所需目录结构。保存后请求会以 YAML 形式落盘。对照仓库示例 tests/sample-collections/jsonplaceholder/users/create.posting.yaml一个保存下来的 POST 请求文件大致长这样name: create a user description: Create a new user method: POST url: https://jsonplaceholder.typicode.com/users body: content: |- { name: John Doe, username: john.doe, email: john.doeexample.com } content_type: application/json headers: - name: Content-Type value: application/json options: follow_redirects: false文件名的“可读性”由 src/posting/save_request.py 的slugify保证小写化、非字母数字字符转-因此从文件系统层面看集合就是一个结构清晰、可版本控制、可手工编辑的纯文本目录。集合文件的解析与加载含请求模型method/url/body/headers/options/scripts等字段由 src/posting/collection.py 负责这正是 Posting “请求即文件”设计理念的源码基础。五、小结从本仓库的 docs/guide/index.md 出发可以看到Posting 的入门成本极低uv/pipx两条安装路径都在隔离环境中秒级完成spacing/theme两个配置项即可完全重塑界面观感而一条 “ctrlt选方法 →ctrll输 URL → jump mode 填 Body →ctrlj发送 →ctrls保存” 的纯键盘链路已经把日常 API 调试的绝大多数操作收敛到了手不离键盘的状态。集合即目录、请求即.posting.yaml文件的设计让整套工作流天然适合纳入版本控制与团队协作。后续还可以继续深入 docs/guide/collections.md集合管理、docs/guide/environments.md环境变量与.env加载、docs/guide/scripting.md请求前/响应后脚本以及 docs/guide/importing.md导入 OpenAPI / Postman 集合等模块把 Posting 用成完全属于自己的一套终端 API 工具箱。赞分享开发工具CLI【免费下载链接】postingThe modern API client that lives in your terminal.项目地址https://gitcode.com/gh_mirrors/po/posting点击查看免费下载相关推荐微信聊天记录完整备份终极指南3步实现数据永久保存微信聊天记录完整备份终极指南3步实现数据永久保存 还在为重要聊天记录的丢失而担忧吗想要把珍贵的对话永远珍藏起来吗WeChatMsg微信消息管理工具让你的每GyroFlow视频防抖软件Windows启动问题终极解决方案从诊断到修复的完整指南GyroFlow视频防抖软件Windows启动问题终极解决方案从诊断到修复的完整指南 GyroFlow是一款利用陀螺仪数据实现专业级视频防抖的开源软件能够将视频处理桌面应用音视频Flowsint API 服务端实战从 uv 安装到 uvicorn 启动与容器化部署Flowsint API 服务端实战从 uv 安装到 uvicorn 启动与容器化部署 Flowsint 是一个面向网络安全分析人员与调查人员的可视化图调查平后端前端网络安全AI 应用图计算创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
