front/docs/前端调整.md
2026-06-04 19:15:28 +08:00

446 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

前端调整清单如下,核心是:**下游不再用 `inParameterList` / `formParameterList`,改为按 ContentType 拆分 Body、Query、Header。**
## 1. 接口详情页字段调整
### 删除/停用
- 下游接口不要再使用 `inParameterList`
- 不再使用 `formParameterList`
- 删除接口级“固定配置”Tab
- 下游表单中不再使用 `$FromBody`
### 新增字段
`SaveInterface` / `GetInterfaceById` 使用这些字段:
```ts
queryFormParameterList: FormParameterInput[]
headerFormParameterList: FormParameterInput[]
bodyFormParameterList: FormParameterInput[]
requestBodyParameterList: ParameterInput[]
mappingBodyParameterList: ParameterInput[]
inParameterList: ParameterInput[]
outParameterList: ParameterInput[]
```
---
## 2. 按 ContentType 显示 Tab
### Json / Xml 下游
显示:
- Query:KV
- Header:KV
- Body:参数树
- Response:参数树
- cURL:原样保留
隐藏:
- Mapping Body
- Body Form KV
- 上游 `inParameterList`
保存时传:
```ts
queryFormParameterList
headerFormParameterList
requestBodyParameterList
outParameterList
```
不要传:
```ts
inParameterList
bodyFormParameterList
mappingBodyParameterList
```
---
### FormUrlEncoded 下游
显示:
- Query:KV
- Header:KV
- Body:KV 表
- Mapping Body:参数树
- Response:参数树
- cURL:原样保留
保存时传:
```ts
queryFormParameterList
headerFormParameterList
bodyFormParameterList
mappingBodyParameterList
outParameterList
```
不要传:
```ts
inParameterList
requestBodyParameterList
```
---
### 上游接口
显示:
- In Parameters:参数树
- Response:参数树
保存时传:
```ts
inParameterList
outParameterList
```
不要传:
```ts
requestBodyParameterList
mappingBodyParameterList
bodyFormParameterList
```
`queryFormParameterList`、`headerFormParameterList` 可以传空数组。
---
## 3. FormParameterInput 调整
新增字段:
```ts
fieldPosition: 1 | 2 | 3
```
含义:
```ts
1 = Header
2 = Body
3 = Query
```
结构:
```ts
interface FormParameterInput {
optionType: number
id: number
name: string
value: string
description?: string
fieldPosition: 1 | 2 | 3
}
```
前端保存前要自动补:
- `queryFormParameterList[*].fieldPosition = 3`
- `headerFormParameterList[*].fieldPosition = 1`
- `bodyFormParameterList[*].fieldPosition = 2`
---
## 4. ParameterInput 调整
新增字段:
```ts
paraKind: 0 | 1
```
含义:
```ts
0 = Normal
1 = MappingBody
```
结构:
```ts
interface ParameterInput {
optionType: number
id: number
pId: number
name: string
alias?: string
cnName?: string
type: number
isRequired: boolean
sort?: string
description?: string
paraKind: 0 | 1
}
```
前端保存前要自动补:
- 上游 `inParameterList[*].paraKind = 0`
- 下游 Json/Xml `requestBodyParameterList[*].paraKind = 0`
- 下游 FormUrlEncoded `mappingBodyParameterList[*].paraKind = 1`
- `outParameterList[*].paraKind = 0`
---
## 5. 占位符调整
新增:
```ts
$FromMappingBody
```
用于:
- FormUrlEncoded 的 `bodyFormParameterList`
- 必要时 Query/Header KV 引用映射结果
删除/停用:
```ts
$FromBody
```
FormUrlEncoded 示例:
```json
{
"name": "notifyBizEventDTO",
"value": "$FromMappingBody",
"fieldPosition": 2
}
```
---
## 6. SaveInterface 请求组装
### Json 下游示例
```json
{
"optionType": 1,
"isUpStream": false,
"serviceProviderId": 5,
"name": "创建订单",
"requestAddress": "https://api.example.com/order",
"requestProtocol": 2,
"requestMethod": 2,
"contentType": 3,
"queryFormParameterList": [
{
"optionType": 1,
"id": 0,
"name": "access_token",
"value": "$FromAccount",
"fieldPosition": 3
}
],
"headerFormParameterList": [],
"requestBodyParameterList": [
{
"optionType": 1,
"id": 1,
"pId": 0,
"name": "orderId",
"alias": "orderId",
"type": 1,
"isRequired": true,
"paraKind": 0
}
],
"outParameterList": [],
"inParameterList": [],
"bodyFormParameterList": [],
"mappingBodyParameterList": []
}
```
### FormUrlEncoded 下游示例
```json
{
"optionType": 1,
"isUpStream": false,
"serviceProviderId": 5,
"name": "1688回调",
"requestAddress": "https://gw.open.1688.com/openapi/http",
"requestProtocol": 2,
"requestMethod": 2,
"contentType": 1,
"queryFormParameterList": [
{
"optionType": 1,
"id": 0,
"name": "_aop_timestamp",
"value": "$TimeStamp",
"description": "ms",
"fieldPosition": 3
}
],
"headerFormParameterList": [],
"bodyFormParameterList": [
{
"optionType": 1,
"id": 0,
"name": "notifyBizEventDTO",
"value": "$FromMappingBody",
"fieldPosition": 2
}
],
"mappingBodyParameterList": [
{
"optionType": 1,
"id": 1,
"pId": 0,
"name": "order",
"alias": "order",
"type": 3,
"isRequired": true,
"paraKind": 1
}
],
"outParameterList": [],
"inParameterList": [],
"requestBodyParameterList": []
}
```
---
## 7. GetInterfaceById 回填规则
后端现在会返回:
```ts
queryFormParameterList
headerFormParameterList
bodyFormParameterList
requestBodyParameterList
mappingBodyParameterList
inParameterList
outParameterList
```
前端回填时:
- Json/Xml:Body Tab 绑定 `requestBodyParameterList`
- FormUrlEncoded:Body Tab 绑定 `bodyFormParameterList`
- FormUrlEncoded:Mapping Body Tab 绑定 `mappingBodyParameterList`
- 上游:入参树绑定 `inParameterList`
- Response:绑定 `outParameterList`
- Query:绑定 `queryFormParameterList`
- Header:绑定 `headerFormParameterList`
---
## 8. 映射页面调整
下游映射目标参数来源改为:
```ts
if (downstream.contentType === 1) {
// FormUrlEncoded
targetTree = mappingBodyParameterList
} else if (downstream.contentType === 3 || downstream.contentType === 4) {
// Json / Xml
targetTree = requestBodyParameterList
}
```
不要再用下游 `inParameterList`。
---
## 9. 前端校验规则
保存前校验:
### 上游
必须:
```ts
inParameterList
```
禁止有值:
```ts
requestBodyParameterList
mappingBodyParameterList
bodyFormParameterList
```
### 下游 Json / Xml
必须:
```ts
requestBodyParameterList
```
禁止有值:
```ts
inParameterList
mappingBodyParameterList
bodyFormParameterList
```
### 下游 FormUrlEncoded
必须:
```ts
bodyFormParameterList
mappingBodyParameterList
```
禁止有值:
```ts
inParameterList
requestBodyParameterList
```
---
## 10. 页面文案建议
- `Query`:请求 Query 参数
- `Header`:请求 Header 参数
- `Body`:
- Json/Xml:请求体结构
- FormUrlEncoded:表单字段
- `Mapping Body`:业务 JSON 映射体
- `Response`:响应结构
`$FromMappingBody` 显示文案:
```text
引用 Mapping Body 映射结果
```
`$FromBody` 从下拉选项中移除。