--- name: "ulthon-tools-http-call" description: "命令行调用后台控制器/URL 进行联调与功能验证(含默认 super token 模拟登录)。" --- # tools:http:call(命令行 HTTP 调用工具) ## 何时使用 - 需要在命令行快速验证某个后台页面/接口是否正常返回。 - 需要绕过浏览器环境,在 CLI 中模拟已登录管理员请求。 - 需要用 `--app/--controller/--action` 直接拼控制器路径调用。 ## 基本用法 ### 1) 直接按 URL 调用 ```bash php think tools:http:call --url="/admin/system.admin/index" --method=GET ``` ### 2) 按控制器参数调用 ```bash php think tools:http:call --app=admin --controller=system.admin --action=index --method=GET ``` ## 请求参数 - `--url`:请求路径(支持以 `/` 开头的相对路径)。 - `--method`:GET/POST/PUT/PATCH/DELETE。 - `--data`:JSON 字符串,请求会自动带 `Content-Type: application/json`。 - `--body`:原始请求体字符串。 - `--headers`:JSON 字符串的请求头对象(例如 `{ "Accept":"application/json" }`)。 - `--app --controller --action`:框架特性参数,用于拼控制器路径。 ## super token(默认模拟登录) ### 机制说明 - `tools:http:call` 默认会为每次请求生成一个新的 token,并写入 `Cache::store('login')`。 - 请求会自动携带 `Authorization: Bearer `。 - 服务端会按既有 Bearer token 机制从 `Cache::store('login')` 读取登录态,因此只要命令行与服务端使用同一套缓存即可生效。 ### 指定模拟账号 ```bash php think tools:http:call --url="/admin/system.admin/index" --user-id=2 ``` ### 关闭 super token(回到未登录行为) ```bash php think tools:http:call --url="/admin/system.admin/index" --super-token=false ``` ## 常见现象与排查 - 仍提示“请先登录后台”:通常是命令行与服务端的缓存不共享,或服务端未运行/未走到同一环境配置。 - 返回“无权限访问”:说明已经是登录态,但该账号对当前节点没有权限;可以换 `--user-id` 或调整权限节点。