结合linux命令风格定义一套网盘接口文档,不考虑实现,纯属娱乐
接口一:列举文件夹(默认只显示文件名/所有文件/全部显示/按文件名排序)
ls /dir option="-a" grep=. sed="-n 'p'"" sort="filename"
option="-l" grep="-v ^d" sed="-n '9,10p'" sort="createtime"
grep=^d sort="size"
{
{
"name" : "a.jpg",
"type" : "file",
"size" : 1024
"create_time" : "2013-04-25 14:49:55",
"modify_time" : "2013-04-25 14:49:55"
}
...
}
错误情况:文件夹不存在
{
"error" : "ls failed"
}
示例:GET /?method=ls&dir=urlencode("/dir")&option=urlencode("-l")&grep=urlencode("^d")&sed=urlencode("9,10p")&sort=urlencode("filename")
接口二:查看指定文件信息
stat /photo/a.jpg
{
"name" : "a.jpg",
"size" : 1024,
"create_time" : "2013-04-25 14:49:55",
"modify_time" : "2013-04-25 14:49:55"
}
错误情况:文件不存在
{
"error" : "stat failed"
}
示例:GET /photo/a.jpg?method=stat
接口三:拷贝文件/文件夹(默认不强制),如果b文件所在路径不存在,递归创建文件夹
cp a b option="-f"
{
"msg" : "copy ok"
}
错误情况:a文件(文件夹)不存在/b文件存在(需添加强制选项)
{
"error" : "copy failed"
}
示例:GET /?method=cp&src=a&des=b&option=urlencode("-f")
接口四:重命名文件/文件夹(强制覆盖),如果b文件所在路径不存在,递归创建文件夹
mv a b
{
"msg" : "rename ok"
}
错误情况:a文件(文件夹)不存在
{
"error" : "rename failed"
}
示例:GET /?method=mv&src=a&des=b
接口五:同步接口
rsync a b
示例:POST /?method=rsync&src=a&des=b
表单包含a文件的分片信息及md5值(确定同步分片时用)
正文包含a文件需要同步的分片,类似多个文件上传(正式同步时用)
返回
{
{需要同步分片一区段}
{需要同步分片二区段}
}
如果文件已同步完毕或不需要同步
{
"msg" : "rsync ok"
}
错误情况: a文件(文件夹)不存在/b路径错误或远端不可达
接口六:改变路径
cd a
{
"msg" : "ch ok"
}
错误情况:a目录不存在
{
"error" : "cd failed"
}
示例:GET /dir/subdir/?method=cd&des=a
接口七:查看当前路径
pwd
{
"/a"
}
示例:GET /?method=pwd
接口八:上传单个文件
put /dir/subdir/a
上传文件内容
返回
{
"msg" : "put ok"
}
错误情况:文件不存在,传输过程出现错误
{
"error" : "put failed"
}
示例:PUT /dir/subdir/a
接口九:下载文件
get /dir/subdir/a
返回文件内容
示例:GET /dir/subdir/a
接口十:预览图片(文档,视频)不作为下载
more /dir/subdir/a.jpg
返回文件内容
示例:GET /dir/subdir/a.jpg?method=more