跳到主要内容

获取目录

请求参数

名称类型是否必填示例值描述
HeadStringstat类型,获取目录为 "stat"
DataString/home/fengcaiwen/lab要查询的路径,绝对路径

返回数据

名称类型示例值描述
HeadStringstat类型,获取目录为 "stat"
DataStruct-具体请参见下表结构体 StatResp

结构体 StatResp

名称类型示例值描述
IdString456AFAA7文件 id
NameStringfengcaiwen文件名称
IsDirBooleantrue是否是目录
PathString/home/fengcaiwen绝对路径
ChildrenArray of Struct-具体请参见下表结构体 Children

Children

名称类型示例值描述
IdString583D370F文件ID
NameStringtest.yaml文件名称
IsDirBooleanfalse是否是目录

请求示例

{
"Head": "stat",
"Data": "/home/fengcaiwen/lab"
}

返回示例

保留

{
"Head": "reports",
"Data": null
}
{
"Head": "stat",
"Data": {
"Id": "456AFAA7",
"Name": "fengcaiwen",
"IsDir": true,
"Path": "/home/fengcaiwen",
"Children": [
{
"Id": "583D370F",
"Name": "ace",
"IsDir": true
},
{
"Id": "71555C6",
"Name": "bioos",
"IsDir": true
},
{
"Id": "9B7BCEAB",
"Name": "LICENSE",
"IsDir": false
},
{
"Id": "74AC66D5",
"Name": "README.md",
"IsDir": false
},
{
"Id": "AA3FB16",
"Name": "deploy.yaml",
"IsDir": false
}
]
}
}

文件删除

请求参数

名称类型是否必填示例值描述
HeadStringdelete类型,删除为 "delete"
DataStruct-具体请参见下表结构体 DeleteReqStruct

结构体 DeleteReqStruct

名称类型示例值描述
IdStringC82C4F32文件id

返回数据

名称类型示例值描述
HeadStringdelete类型,删除为 "delete"
DataStruct-具体请参见下表结构体 DeleteRespStruct

结构体 DeleteRespStruct

名称类型示例值描述
IdStringstat文件id
UserStringfengcaiwen用户名称

请求示例

{
"Head": "delete",
"Data": {
"Id": "C82C4F32"
}
}

返回示例

{
"Head": "delete",
"Data": {
"Id": "C82C4F32",
"User": "E165B965"
}
}

文件保存

请求参数

名称类型是否必填示例值描述
HeadStringpublish类型,保存为 "publish"
DataStruct-具体请参见下表结构体 PublishReqStruct

结构体 PublishReqStruct

名称类型示例值描述
IdStringC82C4F32文件id

返回数据

名称类型示例值描述
HeadStringstat类型,保存为 "publish"
DataStruct-具体请参见下表结构体 PublishRespStruct

结构体 PublishRespStruct

名称类型示例值描述
IdStringstat文件id
RevInteger323TODO
UserStringfengcaiwen用户名称

请求示例

{
"Head": "publish",
"Data": {
"Id": "C82C4F32"
}
}

返回示例

{
"Head": "publish",
"Data": {
"Id": "C82C4F32",
"Rev": 323,
"User": "E165B965"
}
}

报错示例

{
"Head": "stat.err",
"Data": {
"Id": "F9ED7B40",
"Name": "/Users/bytedance/GolandProjects/lab/golab\\",
"IsDir": false,
"Path": "/Users/bytedance/GolandProjects/lab/golab\\",
"Error": "not found"
}
}

文件-搜索

请求参数

名称类型是否必填示例值描述
HeadStringsearch类型,搜索为 "search"
DataStringabc要查询的关键字

返回数据

名称类型示例值描述
HeadStringsearch类型,获取目录为 "search"
DataStruct-具体请参见下表结构体 SearchResp

结构体 StatResp

名称类型示例值描述
IdString456AFAA7文件 id
NameStringfengcaiwen文件名称
IsDirBooleantrue是否是目录
PathString/home/fengcaiwen绝对路径

请求示例

{
"Head": "search",
"Data": "deploy"
}

返回示例

{
"Head": "search",
"Data": [
{
"Id": "583D370F",
"Name": "deployment",
"IsDir": true,
"Path": "/home/fengcaiwen"
},
{
"Id": "AA3FB16",
"Name": "deploy.yaml",
"IsDir": false,
"Path": "/home/fengcaiwen/deployment"
}
]
}

文件新增

请求参数

名称类型是否必填示例值描述
HeadStringcreate类型,新建为 "create"
DataStruct-具体请参见下表结构体 CreateReqStruct

结构体 CreateReqStruct

名称类型示例值描述
NameStringtest.yaml文件/文件夹名称,全路径
IsDirBooleantrue是否是目录

返回数据

名称类型示例值描述
HeadStringcreate类型,新建为 "create"
DataStruct-具体请参见下表结构体 CreateRespStruct

结构体 CreateRespStruct

名称类型示例值描述
IdStringstat文件id
UserStringE165B965用户名称

请求示例

{
"Head": "create",
"Data": {
"Name": "test.yaml",
"IsDir": false
}
}

返回示例

{
"Head": "create",
"Data": {
"Id": "C82C4F32",
"Name": "test.yaml",
"IsDir": false,
"User": "E165B965"
}
}

文件编辑-删除

请求参数

名称类型是否必填示例值描述
HeadStringrevise类型,更新为 "revise"
DataStruct-具体请参见下表结构体 ReviseReqStruct

结构体 ReviseReqStruct

名称类型示例值描述
IdString456AFAA7文件 id
RevInteger25第多少次修改
OpsArray[71,-8,6] 或者 [71,-8]在第71个字符处删除8个字符

返回数据

名称类型示例值描述
HeadStringrevise类型,获取目录为 "revise"
DataStruct-具体请参见下表结构体 ReviseRespStruct

结构体 ReviseRespStruct

名称类型示例值描述
IdString456AFAA7文件 id
RevInteger25第几次修改
OpsArray[71,-8,6] 或者 [71,-8]在第71个字符处删除8个字符
UserStringfengcaiwen用户名称

请求示例

{
"Head": "revise",
"Data": {
"Id": "C82C4F32",
"Rev": 0,
"Ops": [
109,
-2
]
}
}

返回示例

{
"Head": "revise",
"Data": {
"Id": "C82C4F32",
"Rev": 1,
"Ops": [
109,
-2
],
"User": "B4FAA6E2"
}
}

文件编辑-新增

请求参数

名称类型是否必填示例值描述
HeadStringrevise类型,更新为 "revise"
DataStruct-具体请参见下表结构体 ReviseReqStruct

结构体 ReviseReqStruct

名称类型示例值描述
IdString456AFAA7文件 id
RevInteger25第多少次修改
OpsArray[14,"a",11] 或者 [14,"a"]在第14个字符处写入字符"a"

返回数据

名称类型示例值描述
HeadStringrevise类型,获取目录为 "revise"
DataStruct-具体请参见下表结构体 ReviseReqStruct

结构体 ReviseReqStruct

名称类型示例值描述
IdString456AFAA7文件 id
RevInteger25TODO
OpsBooleantrueTODO
UserStringfengcaiwen用户名称

请求示例

{
"Head": "revise",
"Data": {
"Id": "C82C4F32",
"Rev": 26,
"Ops": [
16,
"\n",
2
]
}
}

返回示例

{
"Head": "revise",
"Data": {
"Id": "C82C4F32",
"Rev": 27,
"Ops": [
16,
"\n",
2
],
"User": "B4FAA6E2"
}
}

报错

{
"Head": "revise.err",
"Data": {
"Id": "C82C4F32",
"Rev": 323,
"Ops": [
119,
"\n",
1
],
"User": "A65C39BF",
"Err": {}
}
}

获取单个文件详情

请求参数

名称类型是否必填示例值描述
HeadStringstat类型,获取目录为 "stat"
DataString/home/fengcaiwen/lab要查询的路径,绝对路径

返回数据

名称类型示例值描述
HeadStringstat类型,获取目录为 "stat"
DataStruct-具体请参见下表结构体 StatRespResult

结构体 StatRespResult

名称类型示例值描述
IdString456AFAA7文件 id
NameStringfengcaiwen文件名称
IsDirBooleantrue是否是目录
PathString/home/fengcaiwen绝对路径

请求示例

{
"Head": "stat",
"Data": "/home/fengcaiwen/lab/test.go"
}

返回示例

{
"Head": "stat",
"Data": {
"Id": "C82C4F32",
"Name": "test.go",
"IsDir": false,
"Path": "/home/fengcaiwen/lab/test.go"
}
}

订阅单个文件

请求参数

名称类型是否必填示例值描述
HeadStringsubscribe类型,订阅文件为 "subscribe"
DataStruct-具体请参见下表结构体 SubscribeReq

结构体 SubscribeReq

名称类型示例值描述
IdString456AFAA7文件 id

返回数据

名称类型示例值描述
HeadStringsubscribe类型,获取目录为 "subscribe"
DataStruct-具体请参见下表结构体 SubscribeResp

结构体 SubscribeResp

名称类型示例值描述
IdString456AFAA7文件 id
RevInteger323第多少次修改
OpsString-文件内容
UserStringfengcaiwen订阅的用户

请求示例

{
"Head": "subscribe",
"Data": {
"Id": "C82C4F32"
}
}

返回示例

{
"Head": "subscribe",
"Data": {
"Id": "C82C4F32",
"Rev": 323,
"Ops": [
"hello naison\n\n\n\nhelol\n\ntewst\n\ntes\n\n\nsdfsdf\nsdf\nsd\nfs\ndf\nsdf\n\nsdf\nsd\nf\n\nasdfasdf\n\n\nasdf\n\nasf\n\ns\ndf\n\nasd\n\nasf\n\naf\n\n😊\n"
],
"User": "A65C39BF"
}
}

报错示例

{
"Head": "revise.err",
"Data": {
"Id": "C82C4F32",
"Rev": 323,
"Ops": [
28,
"a",
92
],
"User": "A51053CB",
"Err": {}
}
}

取消订阅单个文件

请求参数

名称类型是否必填示例值描述
HeadStringunsubscribe类型,取消订阅文件为 "unsubscribe"
DataStruct-具体请参见下表结构体 UnsubscribeReq

结构体 SubReq

名称类型示例值描述
IdString456AFAA7文件 id

返回数据

名称类型示例值描述
HeadStringunsubscribe类型,取消订阅文件为 "unsubscribe"
DataStruct-具体请参见下表结构体 UnsubscribeResp

结构体 UnsubscribeResp

名称类型示例值描述
IdString456AFAA7文件 id
RevInteger323第多少次修改
OpsString-文件内容
UserStringfengcaiwen订阅的用户

请求示例

{
"Head": "unsubscribe",
"Data": {
"Id": "C82C4F32"
}
}

返回示例

{
"Head": "unsubscribe",
"Data": {
"Id": "C82C4F32",
"Rev": 323,
"Ops": [
"hello naison\n\n\n\nhelol\n\ntewst\n\ntes\n\n\nsdfsdf\nsdf\nsd\nfs\ndf\nsdf\n\nsdf\nsd\nf\n\nasdfasdf\n\n\nasdf\n\nasf\n\ns\ndf\n\nasd\n\nasf\n\naf\n\n😊\n"
],
"User": "A65C39BF"
}
}

报错示例

{
"Head": "revise.err",
"Data": {
"Id": "C82C4F32",
"Rev": 323,
"Ops": [
28,
"a",
92
],
"User": "A51053CB",
"Err": {}
}
}

文件重命名

请求参数

名称类型是否必填示例值描述
HeadStringrename类型,更新为 "rename"
DataStruct-具体请参见下表结构体 RenameReqStruct

结构体 ReviseReqStruct

名称类型示例值描述
IdString456AFAA7文件或者文件夹 id
NameStringnaison文件或者文件夹的新名字

返回数据

名称类型示例值描述
HeadStringrename类型,获取目录为 "rename"
DataStruct-具体请参见下表结构体 RenameRespStruct

结构体 ReviseRespStruct

名称类型示例值描述
IdString456AFAA7文件或者文件夹 id
NameStringnaison文件或者文件夹的新名字
IsDirBooleantrue是否是目录

请求示例

{
"Head": "rename",
"Data": {
"Id": "C82C4F32",
"Name": "naison"
}
}

返回示例

{
"Head": "rename",
"Data": {
"Id": "C82C4F32",
"Name": "naison",
"IsDir": false,
"User": "B4FAA6E2"
}
}

删除文件夹

同删除文件

新建文件夹

同新建文件

订阅单个文件夹

同订阅文件

取消订阅单个文件夹

同取消订阅文件

文件夹重命名

同文件重命名

常见的逻辑说明

正在编辑的文件 A,还没有保存。此时重命名父文件夹 B 为新名称 C,然后保存文件 A,会怎么样?

  • 文件夹重命名成功,但为旧文件
  • 文件 A 会写到原来的路径 B,而不是新文件夹 C 中

用户 A 和用户 B 正在编辑同一个文件,此时 A 写入了一个字符,此时会发生什么事情?

  • 后台观察到用户 A 和 用户 B 正在订阅当前文件,则会把当前文件所做的操作,转发到对应的 socket 链接中
  • 此时用户 A 和 用户 B 所看到的文件内容一致。
  • 用户 B 可以保存由用户 A 修改的内容