TFS(淘宝文件系统) 基于 Nginx 的 RestFul API 总结

转载自:http://blog.csdn.net/hahajiansheng/article/details/8658780 

刚试用了下淘宝自己开发的文件系统TFS,感觉基于nginx做的RESTful API用起来还是挺方便的,下面对这些API简单总结下,也说下我的一些经验:

特别是那些觉得搭PHP环境的很麻烦的朋友不访参考下我的方案二。

nginx_ip为nginx客户端的ip,port为nginx web服务接口。

一.得用restful api(详细可以参考淘宝的github)

    1.上传文件:
        --------------------------------------------------------------
           使用方法     :   post
           使用URL      :   http:nginx_ip:port/v1/tfs/1.1
           data         :   文件(此文件为sring或者数据流(buffer))
        --------------------------------------------------------------
        
        同理,此时会返回一个TFS所分配的文件名,为json格式,形式如下:
                    
        {
            "TFS_FILE_NAME": "T1F6ETBj_T1RCvBVdK"
        }
        
        
    2.得到数据:
    
        --------------------------------------------------------------
           使用方法     :   get
           使用URL      :   http:nginx_ip:port/v1/tfs/1.1/TFS文件名
        --------------------------------------------------------------
        
        如:http:192.168.1.74:80/v1/tfs/1.1/T1F6ETBj_T1RCvBVdK
        
    3.删除数据:
    
         --------------------------------------------------------------
           使用方法     :   delete
           使用URL      :   http:nginx_ip:port/v1/tfs/1.1/TFS文件名
         --------------------------------------------------------------
        
    4.更新数据:
    
        --------------------------------------------------------------
           使用方法     :   put
           使用URL      :   http:nginx_ip:port/v1/tfs/1.1/TFS文件名
           data         :   文件(此文件为sring或者数据流(buffer))
        --------------------------------------------------------------
        
         同理,此时会返回一个TFS所分配的文件名,为json格式,形式如下:
                    
        {
            "TFS_FILE_NAME": "T1F6ETBj_T1RCvBVdK"
        }
        
        此时返回的依然是当前文件名,这是这个文件名的内容变成了另外一个文件

        火狐有测试RESful API的插件,大家可以去试用一下

二.对那些觉得搭java,php等调用客户端觉得难的朋友不防可以试下这这个方案,大家应该都知道linux命令curl

1.上传命令为 curl --data-binary @/文件目录名/文件名(当前文件目录下就直接写文件名) ngx_host:port/v1/tfs  
    
        此时会返回一个TFS所分配的文件名,为json格式,形式如下:
                
        {
            "TFS_FILE_NAME": "T1F6ETBj_T1RCvBVdK"
        }
        
        显然返回的是TFS给我们所上传文件的TFS的独有文件名
        
    2.下载命令为 curl ngx_host:port/v1/tfs/T1F6ETBj_T1RCvBVdK -o /文件目录/文件名(当前文件目录下直接写文件名)
    
        T1F6ETBj_T1RCvBVdK为上传文件时TFS所给我们返回的独有文件名
        
    3.删除命令是 curl -X "DELETE" ngx_host:port/v1/tfs/T1F6ETBj_T1RCvBVdK
    
    4.更改命令是 curl --data-binary @/文件目录名/文件名(当前文件目录下就直接写文件名) -X "PUT" ngx_host:port/v1/tfs/T1F6ETBj_T1RCvBVdK
    
    
        {
            "TFS_FILE_NAME": "T1F6ETBj_T1RCvBVdK"
        }
    
    此时返回的依然是当前文件名,这是这个文件名的内容变成了另外一个文件
    
    # 注意:PHP有curl这个模拟库,相信结合着这个API用起来应该不难1.上传命令为 curl --data-binary @/文件目录名/文件名(当前文件目录下就直接写文件名) ngx_host:port/v1/tfs  
    
        此时会返回一个TFS所分配的文件名,为json格式,形式如下:
                
        {
            "TFS_FILE_NAME": "T1F6ETBj_T1RCvBVdK"
        }
        
        显然返回的是TFS给我们所上传文件的TFS的独有文件名
        
    2.下载命令为 curl ngx_host:port/v1/tfs/T1F6ETBj_T1RCvBVdK -o /文件目录/文件名(当前文件目录下直接写文件名)
    
        T1F6ETBj_T1RCvBVdK为上传文件时TFS所给我们返回的独有文件名
        
    3.删除命令是 curl -X "DELETE" ngx_host:port/v1/tfs/T1F6ETBj_T1RCvBVdK
    
    4.更改命令是 curl --data-binary @/文件目录名/文件名(当前文件目录下就直接写文件名) -X "PUT" ngx_host:port/v1/tfs/T1F6ETBj_T1RCvBVdK
    
    
        {
            "TFS_FILE_NAME": "T1F6ETBj_T1RCvBVdK"
        }
    
    此时返回的依然是当前文件名,这是这个文件名的内容变成了另外一个文件
   

    我相信很多语言都有直接调用linux命令的类库,这样的话就不用在TFS服务器上搭各个语言的客户端,我们只需要在web服务器上连接上Ngnix服务器然后调用nginx的接口就可以代替各个语言的客户端了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值