diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 000000000..7665f31e0 --- /dev/null +++ b/docs/api.md @@ -0,0 +1,60 @@ +--- +title: API 说明 +--- + +amis 渲染器的数据都来源于 api,有一定的格式要求。 + +### 整体要求 + +要求每个接口都返回 `status` 字段用来表示成功还是失败,如果失败了,通过 `msg` 字段来说明失败原因。当然如果成功 `msg` 也可以用来设置提示信息。 + + +```json +{ + "status": 0, // 0 表示成功,非0 表示失败 + "msg": "", // 提示信息 包括失败和成功 + "data": { + // ... + // 具体的数据 + } +} +``` + +如果你的系统有自己的规范,也没关系,fetcher 整体入口那加个适配器就行了如: + +```js +{ + fetcher: function(api) { + + // 适配这种格式 {"code": 0, "message": "", "result": {}} + return axios(config).then(response => { + let payload = { + status: response.data.code, + msg: response.data.message, + data: response.data.result + }; + + return { + ...response, + data: payload + } + }) + } +} +``` + +### 具体要求 + +每个渲染的接口返回都有自己的格式要求,主要体现在 data 字段内部,具体请参考每个渲染的接口说明。 + +* [Page](./renderers/Page.md#接口说明) + +`TBD` + +* [CRUD](./renderers/CRUD.md#接口说明) +* [Form](./renderers/Form.md#接口说明) + * [Select](./renderers/Form/Select.md#接口说明) + * [Checkboxes](./renderers/Form/Checkboxes.md#接口说明) + * [Radios](./renderers/Form/Radios.md#接口说明) + * [List](./renderers/Form/List.md#接口说明) +* [Wizard](./renderers/Wizard.md#接口说明) \ No newline at end of file diff --git a/docs/renderers/Page.md b/docs/renderers/Page.md index 835e0b0fd..d6c364a74 100644 --- a/docs/renderers/Page.md +++ b/docs/renderers/Page.md @@ -39,3 +39,33 @@ | interval | `number` | `3000` | 刷新时间(最低 3000) | | silentPolling | `boolean` | `false` | 配置刷新时是否显示加载动画 | | stopAutoRefreshWhen | `string` | `""` | 通过[表达式](./Types.md#表达式)来配置停止刷新的条件 | + + +### 接口说明 + +开始之前请你先阅读[整体要求](../api.md)。 + +#### initApi + +Page 渲染器可以配置 initApi 来拉取后端数据。格式要求:data 返回是对象即可。 + +```json +{ + "status": 0, + "msg": "", + "data": { + "a": 1 + } +} +``` + +当配置了 initApi 且返回如上数据后,当前 page 渲染器,以及所有孩子渲染器都能取到这个这个变量了如: + + +```json +{ + "type": "page", + "initApi": "/api/xxx", + "body": "${a}" +} +``` \ No newline at end of file diff --git a/examples/components/Doc.jsx b/examples/components/Doc.jsx index 922aa5c27..54691fe47 100644 --- a/examples/components/Doc.jsx +++ b/examples/components/Doc.jsx @@ -684,6 +684,15 @@ export default { ] }, + { + label: 'API 说明', + path: '/docs/api', + icon: 'fa fa-cloud', + getComponent: (location, cb) => require(['../../docs/api.md'], (doc) => { + cb(null, makeMarkdownRenderer(doc)); + }) + }, + { label: '如何定制', path: '/docs/sdk',