createRestHandlers()
function createRestHandlers(options?): HttpHandlers;
Defined in: packages/rxdb-adapter-http/src/rest.ts:395
用 REST 资源 URL 模板产出一整套 HttpHandlers(US-212 AC#27)。
Parameters
| Parameter | Type | Description |
|---|---|---|
options | RestHandlersOptions | 资源映射与逐操作的模板覆盖 |
Returns
可直接交给 RxDBAdapterHttp 的 handler 集合
Remarks
产出的 handler 与手写的完全等价:同样只做协议 mapping,不碰网络——发请求、注入
auth、提取 status、翻页、分块、单次发射仍全在适配器一侧。因此本模块拿不到、也不需要
改动阶段 A 的任何契约。
默认模板(方法 / 路径):
| 操作 | 方法 | 路径 | 默认产出 |
|---|---|---|---|
fetchMetadata | POST | :entity/metadata | 是(不可关) |
findByIds | POST | :entity/by-ids | 是(不可关) |
create | POST | :entity | 是 |
update | PATCH | :entity/:id | 是 |
delete | POST | :entity/delete | 是 |
version | GET | — | 否 |
isTableExisted | HEAD | — | 否 |
最后两行的路径栏是 — 而不是留空:这两个操作没有默认路径,不配
templates.version.path / templates.isTableExisted.path 就整个不产出 handler。
isTableExisted 的方法栏仍写 HEAD,那是给了路径之后才生效的默认方法
(不给默认路径的理由见 REST_OPERATIONS 里那一条的注释)。
请求体形状:fetchMetadata 发 { where, offset, limit, pageToken }(where 是 JSON
RuleGroup,不是 SQL),findByIds 与 delete 发 { ids },
create / update 直接发调用方给的数据。
Example
rxdb.adapter('http', db => new RxDBAdapterHttp(db, {
baseUrl: 'https://api.example.com/v1',
handlers: createRestHandlers({
resources: { Recipe: 'recipes' },
templates: `{ version: { path: 'meta/version' }, delete: null }`
})
}));
// fetchMetadata → POST https://api.example.com/v1/recipes/metadata
// update → PATCH https://api.example.com/v1/recipes/{id}
// delete → 不产出,repo.delete() 走 AC#4 的 fail-fast
Throws
HttpConfigError 模板路径为空 / 含 ?、#、空白 / 方法非法 / 占位符集合不匹配 /
关闭了必选 handler / resources 的值不是合法路径片段