# 原始 API

> Shoplazza CLI 的 api rest 命令向任意 Shoplazza API 端点发送原始 HTTP 请求，用于快捷命令和 API 命令未覆盖的场景。

原始 HTTP 逃生舱，可调用任意 Shoplazza API 端点。当其他命令未覆盖所需端点时使用。

## rest

```shell
shoplazza api rest <方法> <路径> [参数]
```

### 位置参数

1. `<方法>` — HTTP 方法（`GET`、`POST`、`PUT`、`DELETE`、`PATCH`）
2. `<路径>` — API 路径（如 `/openapi/2026-01/products`）

### 参数

| 参数 | 类型 | 说明 |
|------|------|------|
| `--params <json>` | string | 查询参数（JSON 格式，支持 `-` stdin 或 `@file`） |
| `--data <json>` | string | 请求体（JSON 格式，支持 `-` stdin 或 `@file`） |
| `--jq, -q <表达式>` | string | jq 表达式，用于过滤 JSON 输出 |
| `--dry-run` | bool | 仅打印请求内容，不实际执行 |

### 示例

```shell
# GET 请求
shoplazza api rest GET /openapi/2026-01/products
shoplazza api rest GET /openapi/2026-01/products --params '{"page_size":10}'

# POST 请求（内联 JSON）
shoplazza api rest POST /openapi/2026-01/products --data '{"product":{"title":"Test"}}'

# POST 请求（文件）
shoplazza api rest POST /openapi/2026-01/products --data @product.json

# POST 请求（stdin）
echo '{"product":{"title":"Test"}}' | shoplazza api rest POST /openapi/2026-01/products --data -

# PUT 请求
shoplazza api rest PUT /openapi/2026-01/products/123 --data '{"product":{"title":"Updated"}}'

# DELETE 请求
shoplazza api rest DELETE /openapi/2026-01/products/123

# 使用 jq 过滤
shoplazza api rest GET /openapi/2026-01/products --jq '.products[].title'

# 预览请求（不执行）
shoplazza api rest GET /openapi/2026-01/orders --dry-run
```

### 使用场景

当以下情况时使用 `api rest`：

* 需要调用尚未被 API 命令覆盖的端点
* 需要完全控制请求参数
* 正在尝试新的 API 功能

大多数场景下，建议优先使用[快捷命令](./theme)或 [API 命令](./products)，它们提供类型检查和智能默认值。
