Authentication

有几个访问方法。 验证对服务的请求的主要方法是使用TLS上的HTTP签名。

在大多数情况下,您只需使用SSH私钥对HTTP Date标头的小写日期:和值进行签名; 这样做可以让你创建交互式shell函数(见下文)。 所有的请求都需要一个HTTP授权头,其中的scheme是签名。

PutDirectory (PUT /:login/stor/[:directory]/:directory)

Joyent Manta存储服务中的PutDirectory是一个幂等的创建或更新操作。 您的私有名称空间从/:login / stor开始,然后您可以在其下创建任何嵌套的目录或对象集。

要放置一个目录,只需将HTTP Request-URI设置为你要更新的路径,并将Content-Type HTTP header设置为application / json;type=directory。 没有请求或响应主体。 成功返回204的HTTP状态码。

manta /$MANTA_USER/stor/foo \
-X PUT \
-H 'content-type: application/json; type=directory'
---------------------------------------------------------------------

ListDirectory (GET /:login/stor/:directory)

列出目录的内容。 成功之后,您将收到\ n分离的JSON对象流,其中每个对象表示一个目录条目。content-type将是application / x-json-stream;type=directory。 
每个对象都有一个类型字段,表示该条目是一个目录还是一个对象。 例如(为清楚起见,添加了新的行):
{
"name": "1c1bf695-230d-490e-aec7-3b11dff8ef32",
"type": "directory",
"mtime": "2012-09-11T20:28:30Z"
} {
"name": "695d5de6-45f4-4156-b6b7-3a8d4af89391",
"etag": "bdf0aa96e3bb87148be084252a059736",
"size": 44,
"type": "object",
"mtime": "2012-09-11T20:28:31Z"
}

类型字段表示每个记录的“schema”; 唯一的类型是当前的对象和目录。 两者都有一个名称(文件名),类型(已经描述)和mtime,这是上次更新时间的ISO8601时间戳。
此外,对象类型的记录具有一个大小(content-length)和etag(对于有条件的请求)。您将返回256个条目(您可以通过在查询字符串上设置限制参数选择更少或更多)。
您可以使用标记查询参数选择从哪里开始下一个列表。 您将得到result-set-size header中的记录总数。 服务按字母顺序列出对象(UTF-8归类)。
Query Parameters:
limit: limits the number of records to come back (default and max is 1000)
marker: key name at which to start the next listing
返回
JSON对象流,每个孩子一个记录。
manta /$MANTA_USER/stor/

DeleteDirectory (DELETE /:login/stor/:directory)

删除一个目录。 该目录必须是空的。 这个请求没有响应数据。 成功时返回HTTP 204;

manta /$MANTA_USER/stor/foo -X DELETE

PutObject (PUT /:login/stor/[:directory]/:object)

  创建或覆盖一个对象。 您可以像在传统文件系统上一样指定对象的路径,并且父级必须是目录。 该服务将不会解释您的数据。

具体来说,这意味着你的数据被视为一个不透明的字节流,你将会收到你上传的内容。 成功时返回HTTP 204。

  默认情况下,该服务将在两个不同数据中心的两台物理服务器上存储数据的两个副本; 请注意,每个物理服务器都配置了RAID-Z,

因此磁盘驱动器故障不会影响您的耐用性或可用性。 您可以使用durability-level header增加(或减少)对象的副本数量。

  您应该始终指定一个Content-Type header,它将被存储并返回(HTTP content-negotiation将被处理)。 如果你没有指定,默认是application / octet-stream。

您应该指定一个Content-MD5 header; 如果你这样做, 服务将验证上传的内容匹配header的值。 即使你不包括一个,成功的回应将包括一个computed-md5 header。

这是Manta在摄取对象时计算的MD5校验和。

  如果您使用HTTP条件请求语义(例如,If-Match或If-Modified-Since),则该服务能够为您提供测试/设置语义。跨源资源共享CORS headers 被保存在适当的位置;

通过发送access-control-allow-origin中的值列表来支持预先发送的请求。默认情况下,该服务将存储您的对象的2个副本; 这可以通过durability-level header来改变。

  请注意,如果您使用的是“流传输上传”(传输编码分块),则要么控制服务中的默认对象大小(5Gb),要么通过覆盖 HTTP header max-content-length来“猜测”对象的大小 。

无论哪种方式,该服务将跟踪_actually_发送和记录的字节数。 随后的GET请求将返回实际的长度。 如果您不是流媒体,只需设置内容长度(正常情况下)即可。

  最后,你可以用自己的对象存储自定义headers(例如 "tags"),前缀为m-。 因此,例如,包含头文件m-local-user:foo和一个对象将允许你跟踪创建此对象的应用的某个本地用户。

您最多可以使用4 Kb的header数据。

manta /$MANTA_USER/stor/foo.json -X PUT -H 'content-type: application/json' \
-d '{"hello": "world"}'

PutMetadata (PUT /:login/stor/[:directory]/:object?metadata=true)

PutMetadata允许您覆盖已经存在的对象的HTTP标头,而不用改变数据。 请注意,这是一个幂等的“替换”操作,所以您必须指定要在每个请求上存储的完整HTTP标头集合。

您不能更改“关键”标题:

  • Content-Length
  • Content-MD5
  • Durability-Level
manta /$MANTA_USER/stor/foo.json?metadata=true -X PUT \
-H 'content-type: application/json'

GetObject (GET /:login/stor/[:directory]/:object)

从服务中检索一个对象。 一旦成功,HTTP 200将与您的内容和元数据(HTTP标头)一起返回。

manta /$MANTA_USER/stor/foo.json

DeleteObject (DELETE /:login/stor/[:directory]/:object)

从服务中删除一个对象。 成功时返回HTTP 204。

manta /$MANTA_USER/stor/foo.json -X DELETE
												

manta api的更多相关文章

  1. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  2. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  3. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  4. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  5. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  6. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  7. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  8. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  9. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

随机推荐

  1. 《DSP using MATLAB》示例Example7.14

    代码: M = 20; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l; Hrs = [1, 1, 1, zeros(1, 15), 1, 1]; % Idea ...

  2. decorator and @property

    @property 首先, 它是个装饰器. 其次, 看到这个东西, 意味着它下面的函数可以被当作一个属性(成员变量)来看到.  通常, 这个函数会return点什么东西. 重点讲讲装饰器: 1, py ...

  3. mock的使名用一(生成随机数据)

    Mock.Random 是一个工具类,用于生成各种随机数据. Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) . var Random = Moc ...

  4. Oracle条件分支查询

    Oracle的条件分支查询其实跟java的条件分支语法没啥太大的区别,只不过java多了一个switch关键字而已.看例子: SQL ELSE SUM(t1.TOTALTICKET) END tota ...

  5. RK3288 查看时钟树

    主控端可以通过指令查看时钟树,enable_cnt为1,表示时钟已使能. # cat d/clk/clk_summary cat d/clk/clk_summary clock enable_cnt ...

  6. ACM-世界岛旅行

    [问题描述] 某旅游公司组团去迪拜世界岛旅游.世界岛由n个岛屿组成,岛屿序号为1-n,这些岛屿都直接或间接相连.岛屿之间用桥梁连接.现从1号岛屿开始游览,并约定按如下方式游览: 1) 每游览完一个岛屿 ...

  7. 让html标签显示在页面上

    用 <xmp></xmp> 标签包起来,里面的所有文字会原样显示出来 <xmp><b>1</b><div>2</div&g ...

  8. angular的继承作用域通信

    本人学了一段时间的angular,angular之间怎样通信,我就总结以下几点,如果有哪位大神认为不对,敬请赐教. 1.父子之间的作用域进行通信 html <div ng-controller= ...

  9. 安装配置solr

    1.由于用户是普通用户,没有root一些权限,所以修改hadoop用户权限 用root权限,修改sudoers文件 nano    /etc/sudoers   打开文件,修改hadoop用户权限,如 ...

  10. 分析iOS Crash文件:符号化iOS Crash文件的3种方法

    转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多 ...