cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。本文主要是介绍使用该工具和HTTP协议与swift服务如何交互。cURL允许你从命令行或shell脚本传送和接收HTTP的请求和响应。这使得直接与ReST的API工作而无需其他客服端APIs成为可能。本文,我们需要使用到以下的cURL命令行选项:

-X METHOD 描述HTTP的请求方法(HEAD, GET等) 

-D Dump 将HTTP响应头部到stdout.

-H HEADER 描述一个在请求中的HTTP\HTTPS头部.

-v 使用操作的过程更加详细


1.认证

In order to use the ReST API, you will first need to obtain a authorization token, which will need to be passed in for each request using the X-Auth-Token header. The following example demonstrates how to use cURL to obtain the authorization token and the URL of the storage system.

为了使用ReST的API,我们首先需要获得一个认证令牌,用于传给每个使用X-Auth-Token头部的请求。以下的例子展示了如何使用cURL来获得认证令牌和存储系统的URL。

Exp1:获得X-Storage-Url和X-Auth-Token

curl -D- -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0

运行结果如下:

sting' http://127.0.0.1:8080/auth/v1.0
HTTP/1.1 200 OK
X-Storage-Url: http://127.0.0.1:8080/v1/AUTH_test
X-Storage-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928
X-Auth-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928
Content-Length: 0
Date: Fri, 07 Oct 2011 07:45:58 GMT

也可以使用-v选项来获得更详细的信息:

curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0

运行结果如下:

* About to connect() to 127.0.0.1 port 8080 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> GET /auth/v1.0 HTTP/1.1
> User-Agent: curl/7.21.3 (i686-pc-linux-gnu) libcurl/7.21.3 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: 127.0.0.1:8080
> Accept: */*
> X-Storage-User: test:tester
> X-Storage-Pass: testing
>
< HTTP/1.1 200 OK
< X-Storage-Url: http://127.0.0.1:8080/v1/AUTH_test
< X-Storage-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928
< X-Auth-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928
< Content-Length: 0
< Date: Fri, 07 Oct 2011 07:48:30 GMT
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0

存储URL和认证令牌作为响应头部返回。在认证之后,你可以使用cURL来执行存储服务上的HEAD,GET,DELETE,POSTPUT请求。

2.确定存储的使用情况

一个HEAD请求可以发送到存储服务来确定你已经在系统中存储了多少数据以及你使用的容器数量。使用-X开关来描述正确的HTTP方法和-D将HTTP响应头部输出到终端(stdout)。

Exp2:查询帐号的存储使用情况

 curl -X HEAD -D - \ -H "X-Auth-Token:AUTH_tkf828cc87bb9348168a52619b1f7e3928" \ http://127.0.0.1:8080/v1/AUTH_test

输出如下:

HTTP/1.1 204 No Content
X-Account-Object-Count: 3
X-Account-Bytes-Used: 92983
X-Account-Container-Count: 4
Accept-Ranges: bytes
Content-Length: 0
Date: Fri, 07 Oct 2011 08:04:38 GMT

HTTP请求必须包含了一个头部来描述认证令牌。在响应中的HTTP头部显示在该存储帐号中的容器数量和整个帐号所存储的总字节数。

3.创建一个存储容器

在上传任何数据到OpenStack的对象存储之前,你必须创建一个存储容器。你可以使用PUT请求来创建一个容器;cURL也可以用于该目的。

Exp3:创建一个photos的容器

curl -X PUT -D - -H "X-Auth-Token:AUTH_tkf828cc87bb9348168a52619b1f7e3928" http://127.0.0.1:8080/v1/AUTH_test/photos

运行结果如下:

HTTP/1.1 201 Created
Content-Length: 18
Content-Type: text/html; charset=UTF-8
Date: Fri, 07 Oct 2011 08:18:44 GMT

返回201(Created)的HTTP状态代码表示容器已被成功地创建。

4.上传一个存储对象

在创建完一个容器之后,你可以上传一个本地文件。对于这个例子,我们上传一张林志玲MM的照片。-T开关描述到上传的本地文件的完整路径。

Exp4:上传对象

curl -X PUT -T  /home/swift/下载/lzl.jpg -D - \ -H "Content-Type: image/jpeg" \ -H "X-Auth-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928" \ -H "X-Object-Meta-lzl: 一张关于林志玲的美图" \ http://127.0.0.1:8080/v1/AUTH_test/photos/lzl.jpg

结果如下:

HTTP/1.1 201 Created
Content-Length: 118
Content-Type: text/html; charset=UTF-8
Etag: 870563216b9f54942fc09d574aa3e2bd
Last-Modified: Fri, 07 Oct 2011 08:39:49 GMT
Date: Fri, 07 Oct 2011 08:39:51 GMT

5.其他cURL命令

你可以使用cURL工具发出任何已定义的用于OpenStack对象存储的ReST方法。例如,你可以使用cURL来发送POST和DELETE请求即使我们没有提供的相关例子。比如,下载刚才上传的照片:

curl -X GET -H "X-Auth-Token: AUTH_tkf828cc87bb9348168a52619b1f7e3928" http://127.0.0.1:8080/v1/AUTH_test/photos/lzl.jpg >td_lzl.jpg

注意:一般地,你每次调用curl来执行一个操作,系统就会创建一个独立的TCP/IP和SSL连接(https)然后丢弃。然而,使用语言的APIs是设计用来重用这些在操作之间的连接,因此提供了更好的细嫩。我们推荐在你的产品应用中使用一种支持语言的APIs并且限制curl仅用来快速和简单地测试/诊断。

转载于:https://www.cnblogs.com/yuxc/archive/2011/10/07/2200656.html

使用cURL操作Openstack对象存储的ReST API相关推荐

  1. OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)上

    十.Openstack对象存储服务(swift)上 配置:我在计算节点添加了两块硬盘(sdb,sdc)用来当存储用,在我这搭建中计算节点也就是存储节点了,原因电脑无法拉动更多虚拟几所以咯... 简单介 ...

  2. OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)中

    十.Openstack对象存储服务(swift)中 计算节点上(我把计算节点当存储节点用添加了sdb,sdc两块硬盘) 1.安装软件包: yum install xfsprogs rsync  ope ...

  3. OpenStack对象存储——Swift

    OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.本文将从架构.原理 和实践等几方面讲述S ...

  4. Openstack 对象存储服务之争:Ceph或者Swift

    背景 Ceph现在已经是Openstack官方主要支持的存储后端,而最新的Ceph不仅可以提供快服务,文件服务,而且还可以提供对象存储.Openstack Swift也提供对象存储服务,那这两者到底是 ...

  5. 腾讯云COS对象存储图片文件API的详细步骤过程

    首先创建一个桶.相当于你存储图片的容器.我这里是存储图片. 我选则是共有读,私有写.因为不选择共有读的话,以后别的地方没办法访问 注意: 公有读权限可以通过匿名身份直接读取您存储桶中的数据,存在一定的 ...

  6. 三方平台与对象存储对接后的应用场景及接口说明

    // 作者:孙琦 • 万博智云联合创始人.CTO • Ceph中国社区联合创始人 • 中国信息通信研究院可信云标准专家(云迁移/云容灾) • 阿里云和腾讯云最有价值专家 自2022年8月底发布数据流转 ...

  7. 使用SLDT将数据传输到SoftLayer对象存储

    存档日期:2019年5月15日 | 首次发布:2014年6月24日 SoftLayer®提供基于OpenStack Swift的对象存储服务. 您可以使用SoftLayer API和命令行工具(如cU ...

  8. 基于 MinIO 对象存储框架的短视频点播平台设计

    作者 | 中国农业银行 艾明浩 李云婷 出品 | CSDN(ID:CSDNnews) 短视频平台简介 以短视频点播为代表的流媒体技术应用在移动互联网时代实现了快速扩张.在互联网内容趋于多元化的今天,短 ...

  9. 一文讲清:对象存储、文件存储、块存储。绝对好文

    从应用角度看块存储.文件存储.对象存储 产品和市场需求有各种相互影响的关系,但不管是哪一种,最终呈现都是产品和应用需求需要对应匹配.应用需求越多样化,市场也就划分得更加细,产品种类也就更加丰富.在存储 ...

最新文章

  1. 基于VLC的rtsp服务器linux平台搭建
  2. 综合布线施工中的不规范现象
  3. Paddle 环境中 使用LeNet在MNIST数据集实现图像分类
  4. C# System.Timers.Timer中的坑,程序异常退出后timer依然运行问题
  5. c 获取mysql安装路径_linux查看mysql安装路径
  6. jupyter lab插件无法打开,且报错Error: 500 (Internal Server Error)
  7. 人物和背景分离的快速方法
  8. Pluto-基于Caffe的GPU多机多卡深度学习算法产品
  9. Arbin数据导出---cellpy库的安装与使用
  10. 如何检查python模块的版本?
  11. Objective-C GCD深入理解
  12. macpro如何清理磁盘空间_在MacBook上,释放磁盘空间的7种方法
  13. 波长光电IPO过会:年营收3亿 黄胜弟与朱敏夫妇是实控人
  14. 零基础入门前端工程师必备书籍推荐
  15. 贝叶斯网学习笔记(一)
  16. Servlet内存马
  17. 【kindle资源】一本不得不读的投资经典《唐朝-手把手教你读财报》
  18. cas246516-15-4|1-羧戊基-2,3,3-三甲基吲哚-5-硫酸钾花菁染料-齐岳生物
  19. 《python编程从入门到实践》读书笔记1
  20. Intra-Instance VICReg: Bag of Self-Supervised Image Patch Embedding

热门文章

  1. 计算机视觉(三)——人脸识别
  2. 网站流量预测任务第一名解决方案:从GRU模型到代码详解时序预测
  3. 效果超某度OCR:文本检测、文本识别(cnn+ctc、crnn+ctc)
  4. java int stack_java中int算法的有趣现象
  5. python数据分析师工资待遇_预测python数据分析师的工资
  6. 怎样去除excel表中的虚线_Excel表格里的虚线如何去掉?
  7. recyclerview放不同的布局_RecyclerView系列之(2):为RecyclerView添加分隔线
  8. 服务器控件下拉框显示隐藏,演练:在 GridView Web 服务器控件中编辑时显示下拉列表...
  9. oracle 重启后 检查,oracle常规检查有哪些,oracle RAC中的一个节点经常重启?
  10. 现代电子计算机诞生理论基础是什么,《计算机应用基础》习题集2