提交 39b83f5a authored 作者: vipcxj's avatar vipcxj

新增文档:文件上传和错误码列表

上级 9bbe5d9f
# 错误码
名称 | 值 | 说明
--------------------- | ----------- | ------
SUCCESS | 0x00000000L | 成功
EXCEPTION | 0x00010000L | 服务器内部异常,错误信息即异常的堆栈信息
NO_SUCH_USER | 0x00010001L | 用户不存在
WRONG_PASSWORD | 0x00010002L | 密码错误
INVALID_TOKEN | 0x00010003L | 无效的令牌,可能令牌已过期,或者令牌格式不对导致解析失败
NOT_AUTHED_YET | 0x00010012L | 令牌未经验证
STATE_VALIDATE_FAILED | 0x00010013L | 状态验证失败,调用动态接口时,若不满足必须的状态条件,则返回此错误码
PARAM_VALIDATE_FAILED | 0x00010014L | 参数验证失败,调用动态接口时,若不满足必须的参数条件,则返回此错误码
NO_OPERATION_RIGHT | 0x00010100L | 没有对应管理权限
NO_MODULE_RIGHT | 0x00010101L | 没有对应模块权限
NO_INTERFACE_RIGHT | 0x00010102L | 没有对应动态接口权限
NO_RESOURCE_RIGHT | 0x00010104L | 没有对应文件操作权限
NO_DOMAIN_RIGHT | 0x00010105L | 没有对应作用域权限
NO_DATASOURCE_RIGHT | 0x00010106L | 没有对应数据源权限
GENERAL_ERROR | 0x00011111L | 其他错误,没有特定意义。
CUSTOM_ERROR | 0x1XXXXXXXL | 自定义错误,X可以是任何值,动态接口中临时定义的错误,所以同样的错误码在不同动态接口中可能表示不同含义。
# 文件传输
本系统提供对小文件的存取功能。文件上传和文件的元信息的修改是分开进行的。
文件成功上传后会生成一个唯一的内部路径,用以唯一标识这个文件。
## 首次上传
### url
- **URL**:
/resource/{token}
- *token* 加密后的令牌
- **Method**:
POST
- **Content-Type**:
application/json
- *uriList* - **[ string ]** 当上传成功时,返回所上传文件的系统内部路径,
因为支持一次上传多个文件,所以返回的内部路径是个数组
- **or** *error object* - **object** 当上传失败时,则返回这个错误对象。
- *errorCode* - **long** 错误码
- *message* - **string** 错误信息
- *data* - **any** 错误相关数据
上传接口使用最普遍的multipart/form-data Post文件上传方式。
不同于其他接口,http包体的类型不再是application/json,而是multipart/form-data。
另一方面,加密的token也不再是放在包体中,而是直接拼接在url的路径中。
文件名若带后缀,系统支持自动根据后缀获取文件的媒体类型。
## 更新上传
### url
- **URL**:
/resource/{token}/{uri}
- *token* 加密后的令牌
- *uri* urlEncode过的系统内部路径
- **Method**:
POST
- **Content-Type**:
application/json
- *uriList* - **[ string ]** 当上传成功时,返回所上传文件的系统内部路径,
因为支持一次上传多个文件,所以返回的内部路径是个数组
- **or** *error object* - **object** 当上传失败时,则返回这个错误对象。
- *errorCode* - **long** 错误码
- *message* - **string** 错误信息
- *data* - **any** 错误相关数据
替换之前上传的文件。基本和首次上传相同,但因为需要替换的文件的内部uri是拼接在url上的。
所以一次只能替换一个文件,不再像首次上传那样,支持多个文件。只有管理员和文件的拥有者有权更新文件。
首次上传文件的用户默认为文件的拥有者。
...@@ -12,7 +12,9 @@ import styles from './index.less'; ...@@ -12,7 +12,9 @@ import styles from './index.less';
import mdIndex from './index.md'; import mdIndex from './index.md';
import mdAuth from './auth.md'; import mdAuth from './auth.md';
import mdDomain from './domain.md'; import mdDomain from './domain.md';
import mdFile from './file.md';
import mdDyInt from './dynamic-interface/index.md'; import mdDyInt from './dynamic-interface/index.md';
import mdError from './error.md';
import createPages from './dynamic-interface'; import createPages from './dynamic-interface';
import md from './markdown'; import md from './markdown';
...@@ -34,6 +36,7 @@ class DocMainPage extends React.PureComponent { ...@@ -34,6 +36,7 @@ class DocMainPage extends React.PureComponent {
<TreeNode title="前置说明" key="index" /> <TreeNode title="前置说明" key="index" />
<TreeNode title="登录与认证" key="auth" /> <TreeNode title="登录与认证" key="auth" />
<TreeNode title="作用域" key="domain" /> <TreeNode title="作用域" key="domain" />
<TreeNode title="文件管理" key="file" />
<TreeNode title="动态接口" key="interface"> <TreeNode title="动态接口" key="interface">
{ {
pages.map(page => ( pages.map(page => (
...@@ -41,6 +44,7 @@ class DocMainPage extends React.PureComponent { ...@@ -41,6 +44,7 @@ class DocMainPage extends React.PureComponent {
)) ))
} }
</TreeNode> </TreeNode>
<TreeNode title="错误码" key="error" />
</Tree> </Tree>
</div> </div>
<div className={styles.contents}> <div className={styles.contents}>
...@@ -48,12 +52,14 @@ class DocMainPage extends React.PureComponent { ...@@ -48,12 +52,14 @@ class DocMainPage extends React.PureComponent {
<Route path={`${match.path}/index`} component={md(mdIndex)} /> <Route path={`${match.path}/index`} component={md(mdIndex)} />
<Route path={`${match.path}/auth`} component={md(mdAuth)} /> <Route path={`${match.path}/auth`} component={md(mdAuth)} />
<Route path={`${match.path}/domain`} component={md(mdDomain)} /> <Route path={`${match.path}/domain`} component={md(mdDomain)} />
<Route path={`${match.path}/file`} component={md(mdFile)} />
<Route path={`${match.path}/interface`} exact component={md(mdDyInt)} /> <Route path={`${match.path}/interface`} exact component={md(mdDyInt)} />
{ {
pages.map(page => ( pages.map(page => (
<Route key={page.name} path={page.path} render={page.render} /> <Route key={page.name} path={page.path} render={page.render} />
)) ))
} }
<Route path={`${match.path}/error`} component={md(mdError)} />
</Switch> </Switch>
</div> </div>
</div> </div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论