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. python3 升级 pip9.0.1 到pip-9.0.3

    首先试试 python -m pip install --upgrade pip python3.5 升级 pip-9.0.3报错 You are using pip version 9.0.1, h ...

  2. iPhone4s 9.2.1安装cydia(越狱)

    依据网上资料而来 主要就是上图视频中的6步骤选项,不要选错. 1.prepare for jailbreak 2.选择Accept 3. proceed with jailbreak 4.begin ...

  3. Django ORM哪些操作

    一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 ...

  4. python 有关引用的一些问题

    python 有关引用的一些问题 print id.__doc__ ​ id(object) -> integer Return the identity of an object. This ...

  5. 批量修改文件名的bash脚本

    #!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do # echo "sox $line --cha ...

  6. 历届试题 小数第n位(小技巧)

    问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...

  7. MySQL COUNT(*) & COUNT(1) & COUNT(col) 比较分析

    在面试的时候我们会经常遇到这个问题: MySQL 中,COUNT(*).COUNT(1).COUNT(col) 有区别吗? 有区别. 接下来我们分析一下这三者有什么样的区别. 一.SQL Syntax ...

  8. appium在android7.0上无法启动问题

    前言 由于最近很多android手机升级到7.0系统了,有些小伙伴的appium版本用的还是1.4版本,在运行android7.0的app自动化时候遇到无法启动问题:WebDriverExceptio ...

  9. offset()和position()

    网上百度都有的说明是 offset():获取匹配元素在当前视口的相对偏移. position():获取匹配元素相对父元素的偏移. 如果单纯写这两句话,这个博客毫无意义 这里我写下他俩的使用情况,希望对 ...

  10. CentOS7 php7 安装 curl 扩展

    直接从php源码包中,使用root权限安装. 找到原先安装PHP的源码包文件(如果已经删掉需要重新下载原来版本的源码包并解压) 我的php源码包在root家目录下. cd /php-7.1.4/ext ...