mirror of
https://github.com/keven1024/015.git
synced 2026-06-07 21:04:33 +00:00
38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# webhook-body-field Specification
|
||
|
||
## Purpose
|
||
TBD - created by archiving change add-webhook-body-and-fix-curl-import. Update Purpose after archive.
|
||
## Requirements
|
||
### Requirement: Webhook body 字段可在 UI 中配置
|
||
系统 SHALL 在 Webhook 高级设置面板中暴露一个 `body` textarea,允许用户为每条 Webhook 条目输入原始请求体字符串。
|
||
|
||
#### Scenario: 用户输入 body 文本
|
||
- **WHEN** 用户展开某条 Webhook 的高级面板并在 body textarea 中输入文本
|
||
- **THEN** body 值以 `notify_webhooks[n].body` 的路径存储到表单中
|
||
|
||
#### Scenario: body 字段默认为空
|
||
- **WHEN** 用户通过"添加"按钮新增一条 Webhook 条目
|
||
- **THEN** `body` 默认值为空字符串
|
||
|
||
---
|
||
|
||
### Requirement: curl 导入自动填充 method、headers 和 body
|
||
系统 SHALL 解析粘贴到 Webhook URL 字段的 `curl` 命令,并自动将解析结果中的 `url`、`method`、`headers`、`body` 填入表单,同时展开高级面板。
|
||
|
||
#### Scenario: 将包含 headers 的有效 curl 命令粘贴到 URL 字段
|
||
- **WHEN** 用户在 URL 输入框中粘贴以 `curl ` 开头的字符串,且字段失去焦点
|
||
- **THEN** `url` 被设置为 `data.url.fullUrl`,`method` 被设置为 `data.method`(大写),`headers` 被转换为 `[string, string][]` 键值对数组,对应 Webhook 条目的高级面板被展开
|
||
|
||
#### Scenario: curl 命令包含 body
|
||
- **WHEN** 解析后的 curl 结果中包含非空的 `body` 字段
|
||
- **THEN** `body` 被写入 `notify_webhooks[n].body`
|
||
|
||
#### Scenario: curl 命令不包含 body(如 GET 请求)
|
||
- **WHEN** 解析后的 curl 结果中没有 `body` 字段或其值为空
|
||
- **THEN** `notify_webhooks[n].body` 保持为空字符串(不被 undefined 覆盖)
|
||
|
||
#### Scenario: 解析失败或输入不是 curl 命令
|
||
- **WHEN** URL 字段值不以 `curl ` 开头,或 `parseCurl` 返回 `success: false`
|
||
- **THEN** 表单中所有字段保持不变
|
||
|