设计一套网盘接口设计

结合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
 
posted @ 2013-11-07 08:25  ciaos  阅读(400)  评论(0编辑  收藏  举报