指南Univer Sheets引入高级功能服务端集成Univer Server 接口定义

Univer server API 定义

规则

  1. 带有 * 符号的参数表示是必须的。
  2. 带有 . 符号的返回值表示是 json 对象的属性。
  3. GETDELETE 的请求参数只能出现在路径和 query 里。
  4. POSTPUTPATCH 请求一般需要 content-type: application/json 请求头。

创建文档

POST /universer-api/snapshot/{type}/unit/-/create

参数:

字段类型描述
typeenum(int) *1(doc), 2(sheet)
路径和请求体参数
namestring *文档名称
creatorstring *创建者id

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息
unitIDstring文档id

例:

curl http://localhost:8000/universer-api/snapshot/{type}/unit/-/create \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw '{"type":2,"name":"New Sheet By Univer","creator":"userID"}'

# response
{"error":{"code":1, "message":"success"}, "unitID":"ETVf-B4lQqOSE_p09mcp9Q"}

获取文档列表

GET /universer-api/snapshot/{type}/units

参数:

字段类型描述
typeenum(int) *1(doc), 2(sheet)
路径和请求体参数
nextCursorstring分页的下一页游标

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息
unitsarray[object]
.unitIDstring文档id
.namestring文档名称
.typeenum(int)1(doc), 2(sheet)
nextCursorstring分页的下一页游标,当为空时表示为最后一页

例:

curl -X GET 'http://localhost:8000/universer-api/snapshot/1/units?nextCursor=100'

# response
{"error":{"code":1, "message":""},"units":[{"unitID":"1","name":"a","type":1}],"nextCursor":"200"}

删除文档

DELETE /universer-api/snapshot/-/units

参数:

字段类型描述
unitIdsarray[string] *文档 id 数组

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息

例:

curl -X DELETE 'http://localhost:8000/universer-api/snapshot/-/units?unitIds=1&unitIds=2'

# response
{"error":{"code":1, "message":""}}

上传文件

POST /universer-api/stream/file/upload

  1. 请求体是 HTML form 结构,所以请求头需要一个类似的: content-type: multipart/form-data;boundary=---------------------------163876677831359887162093904846
  2. 注意 size 参数必须等于真实文件大小,如果不等于会造成返回 error 。

参数:

字段类型描述
sizeint *文件大小(byte),query 参数
fileForm.file *HTML form 上传文件

返回值:

字段类型描述
FileIdstring文件id,用于后面请求比如导入和导出

例:

curl 'http://localhost:8000/universer-api/stream/file/upload?size=19261' \
  -X POST \
  -H 'Content-Type: multipart/form-data; boundary=---------------------------163876677831359887162093904846' \
  --data-binary $'-----------------------------163876677831359887162093904846\r\nContent-Disposition: form-data; name="file"; filename="test.xlsx"\r\nContent-Type: application/wps-office.xlsx\r\n\r\n-----------------------------163876677831359887162093904846--\r\n'

# response
{"FileId":"xxxx"}

导入

POST /universer-api/exchange/{type}/import

参数:

字段类型描述
typeenum(int) *1(doc), 2(sheet)
outputTypeenum(int) *1(unit), 2(json)
fileIDstring *上传的文件id

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息
taskIDstring转换任务 id,导入导出是异步的,使用该 id 轮询接口获取转换结果

例:

curl 'http://localhost:8000/universer-api/exchange/2/import' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw \
  '{"fileID":"123","outputType":1}'

# response
{"error":{"code":1,"message":""},"taskID":"456"}

导出

POST /universer-api/exchange/{type}/export

参数:

字段类型描述
typeenum(int) *1(doc), 2(sheet)
unitIDstring *文档id

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息
taskIDstring转换任务 id,导入导出是异步的,使用该 id 轮询接口获取转换结果

例:

curl 'http://localhost:8000/universer-api/exchange/2/export' \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-raw \
  '{"unitID":"xxxx","type":2}'

# response
{"error":{"code":1,"message":""},"taskID":"456"}

获取转换结果

GET /universer-api/exchange/task/{taskID}

参数:

字段类型描述
taskIDstring *转换任务 id

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息
statusenum(string)pending, done, failed
export.fileIDstring导出转换结果的文件 id,用于后面接口获取文件内容
import.unitIDstring导入转换后的 unitID,用于打开在线表格
import.jsonIDstring导入转换为 json 结果的文件 id,用于后面接口获取文件内容

例:

curl -X GET 'http://localhost:8000/universer-api/exchange/task/123'

# reponse(import)
{"error":{"code":1,"message":""},"taskID":"123","status":"done","import":{"jsonID":"456"}}

# response(export)
{"error":{"code":1,"message":""},"taskID":"123","status":"done","export":{"fileID":"456"}}

获取文件

GET /universer-api/file/{fileID}/sign-url

  1. 接口返回一个文件下载链接,需要通过它获取文件内容

参数:

字段类型描述
fileIDstring *转换任务的结果文件 id

返回值:

字段类型描述
error.codeenum(int)1(成功)
error.messagestring失败信息
urlstring文件的下载连接

例:

curl -X GET 'http://localhost:8000/universer-api/file/1234/sign-url'

# response
{"error":{"code":1,"message":""},"url":"https://192.168.50.74:19000/univer/file/123/univer-2060360000.xlsx"}