Appearance
基础能力
此部分为接入方必须实现的最少回调接口。请求方为文曲,调用接入方实现的如下接口,接口地址接入方可自定义,文档只是提供示例。
公共响应体
说明:此为所有回调接口响应的结构体。
参数:
字段 | 位置 | 必须 | 类型 | 说明 |
---|---|---|---|---|
Content-Type | header | 必须 | String | 请求体为 json 格式,application/json |
code | body | 必须 | String | 0-成功,其他为错误 |
msg | body | 必须 | String | 错误code码,可以附带描述信息 |
data | body | 必须 | String | 具体业务数据 |
返回值示例:
json
{
"code": "0",
"msg": "",
"data": {
// 具体业务数据
}
}
获取文件信息
接口:POST /file/info
说明:该接口用于获取文件的基本信息,在文档打开过程中,需要这些基本信息作为文件的标识与展示。
参数:
字段 | 位置 | 必须 | 类型 | 说明 |
---|---|---|---|---|
W-Access-Token | header | 必须 | String | 当前用户 token |
W-File-Id | header | 必须 | String | 当前文档 id |
W-Client-Id | header | 必须 | String | 客户端 id,不同浏览器值不同,可用来标识一个用户是否在同一个浏览器 |
Content-Type | header | 必须 | String | 请求体为 json 格式,application/json |
callbackParams | body | 非必须 | String | 获取编辑链接时接入方若提供则回调时携带 |
请求体示例:
json
{
"callbackParams": {
"key": "value"
}
}
返回值:接入方需要实现的响应格式
字段 | 必须 | 类型 | 说明 |
---|---|---|---|
file.id | 必须 | String | 当前文档 id |
file.name | 必须 | String | 当前文档名称包含文档后缀名 |
file.size | 必须 | long | 当前文档大小 |
file.downloadUrl | 必须 | String | 当前文档的下载地址,调用该地址时会携带 W-Access-Token |
userAcl.rename | 必须 | byte | 当前用户对当前文档是否可以执行重命名操作,1-开启,0-关闭 |
userAcl.copy | 必须 | byte | 当前用户对当前文档是否可以执行复制操作,1-开启,0-关闭 |
userAcl.print | 必须 | byte | 当前用户对当前文档是否可以执行打印操作,1-开启,0-关闭 |
userAcl.download | 必须 | byte | 当前用户对当前文档是否可以执行下载操作,1-开启,0-关闭 |
userAcl.comment | 必须 | byte | 当前用户对当前文档是否可以执行批注操作,1-开启,0-关闭 |
user.id | 必须 | String | 当前用户 id |
user.name | 必须 | String | 当前用户名称,会显示在页面中展示当前文档协作人员 |
user.permission | 必须 | String | 当前用户对当前文档权限:read 只读,write 编辑 |
user.image | 非必须 | String | 当前用户头像地址,若没有页面提供默认显示,该地址不能鉴权 |
watermark.type | 非必须 | byte | 水印类型:0-无水印; 1-文字水印 |
watermark.value | 非必须 | String | 文字水印的内容比如当前用户名称,当type为1时此字段必选 |
watermark.fillstyle | 非必须 | String | 水印透明度 |
watermark.font | 非必须 | String | 水印内容使用的字体 |
watermark.rotate | 非必须 | int | 水印旋转度 |
watermark.horizontal | 非必须 | int | 水印水平间距 |
watermark.vertical | 非必须 | int | 水印垂直间距 |
返回值示例:
json
{
"code": "0",
"msg": "",
"data": {
"file": {
"id": "exampleId",
"name": "example.docx",
"size": 2000,
"downloadUrl": "http://ip:port/file?fid=f132aa30a87064",
"userAcl": {
"rename": 1,
"copy": 1,
"print": 1,
"download": 1,
"comment": 1
},
"watermark": {
"type": 1,
"value": "水印",
"font": "bold 16px Serif",
"fillstyle": "rgba( 192, 192, 192, 0.3 )",
"rotate": 30,
"horizontal": 50,
"vertical": 100
}
},
"user": {
"id": "1000",
"name": "admin",
"permission": "write",
"avatarUrl": "http://ip:port/id=1000"
}
}
}
示例代码:
java
@PostMapping("/file/info")
public Result fileInfo(@RequestHeader("W-Access-Token") String token, @RequestHeader("W-File-Id") String fileId,
@RequestHeader("W-Client-Id") String clientId, @RequestBody FileInfoReq req) {
// 构建响应结构体
}
文件重命名
接口:POST /file/rename
说明:该接口用于在页面上重命名文档。
参数:
字段 | 位置 | 必须 | 类型 | 说明 |
---|---|---|---|---|
W-Access-Token | header | 必须 | String | 当前用户 token |
W-File-Id | header | 必须 | String | 当前文档 id |
Content-Type | header | 必须 | String | 请求体为 json 格式,application/json |
newFileName | body | 必须 | String | 修改后的文件名称,不含后缀名 |
callbackParams | body | 非必须 | String | 获取编辑链接时接入方若提供则回调时携带 |
请求体示例:
json
{
"newFileName": "新文件名称",
"callbackParams": {
"key": "value"
}
}
返回值:无
返回值示例:
json
{
"code": "0",
"msg": ""
}
示例代码:
java
@PostMapping(value = "/file/rename")
public Result rename(@RequestHeader("W-Access-Token") String token, @RequestHeader("W-File-Id") String fileId,
@Validated @RequestBody RenameReq req) {
// 构建响应结构体
}
文件保存
接口:POST /file/save
说明:文档内容变更后保存,同步新文档。
参数:
字段 | 位置 | 必须 | 类型 | 说明 |
---|---|---|---|---|
W-Access-Token | header | 必须 | String | 当前用户 token |
W-File-Id | header | 必须 | String | 当前文档 id |
Content-Type | header | 必须 | String | 表单提交 multipart/form-data |
file | body | 必须 | File | 变更后的文件 |
saveType | body | 必须 | String | 触发机制:手动保存(CTRL+S)-manual,关档保存-closesave |
callbackParams | body | 非必须 | String | 获取编辑链接时接入方若提供则回调时携带 |
请求体示例:form 表单提交
返回值:无
返回值示例:
json
{
"code": "0",
"msg": ""
}
示例代码:
java
@PostMapping(value = "/file/save")
public Result save(@RequestHeader("W-Access-Token") String token, @RequestHeader("W-File-Id") String fileId,
@RequestParam("file") MultipartFile file, FileSaveReq req) {
// 构建响应结构体
}