38 lines
2.0 KiB
Plaintext
38 lines
2.0 KiB
Plaintext
|
|
---
|
|||
|
|
description: 接口迁移到 xk-api 后必须拆出独立模块文件,禁止再往 api.js 大文件里塞
|
|||
|
|
alwaysApply: true
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# API 模块拆分规则(xk-api 迁移必读)
|
|||
|
|
|
|||
|
|
`request/api/api.js`(约 600+ 行大杂烩)是历史遗留的 Yii 接口聚合文件。
|
|||
|
|
**任何迁移到 xk-api 的接口、以及所有新增的 xk-api 接口,一律不得写进 `api.js`**,必须提取/新建到 `request/api/` 下的独立业务模块文件。
|
|||
|
|
|
|||
|
|
## 必须做
|
|||
|
|
|
|||
|
|
1. **按业务域建独立文件**:`request/api/<module>.js`,小驼峰命名(已有先例:`patient.js`、`order.js`、`register.js`、`product.js`、`medicalRecord.js`、`specialPrescription.js`)
|
|||
|
|
2. **统一走 http 封装**:`import { post, get } from './http'`,第三参传 `3`(`HttpUrlMap[3] = '/xkApi'`),不要手拼 `/xkApi` 字符串到 `http()` 老封装上
|
|||
|
|
3. **文件头注释标明后端与取值方式**,每个函数注释标 HTTP 方法与路径,例如:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
import { post, get } from './http'
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 就诊人相关接口统一走 xk-api(type=3)
|
|||
|
|
* 取值:unwrapXkApi → code / result / message
|
|||
|
|
*/
|
|||
|
|
/** 就诊人列表 xk-api POST /patient/list */
|
|||
|
|
export async function getPatientListApi(params = {}) {
|
|||
|
|
return await post('/patient/list', params, 3)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **迁移某接口时**(Yii → xk-api):把它从 `api.js` 挪到对应模块文件,`api.js` 里原函数直接删除(调用方改 import),确实来不及改完所有调用方时才允许在 `api.js` 保留一行 re-export 并标 `@deprecated`
|
|||
|
|
5. 页面取值统一 `unwrapXkApi`(见 Api-Response.mdc)
|
|||
|
|
|
|||
|
|
## 禁止做
|
|||
|
|
|
|||
|
|
- 禁止在 `api.js` 中新增任何函数(包括 Yii 接口——新 Yii 接口也应放模块文件)
|
|||
|
|
- 禁止新代码再用 `normalizeXkApiResponse` 这类「把 xk-api 响应抹成 errcode/data」的兼容层;那是存量代码的过渡产物
|
|||
|
|
- 禁止一个模块文件里混装两个后端的接口而不加注释区分;同一文件确需并存时,每个函数注释必须标明 `// xk-api` 或 `// Yii`
|