11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

Amazon 选择 HAL 作为 AppStreamAPI 的媒体类型

  • 2014-03-27
  • 本文字数:1099 字

    阅读完需:约 4 分钟

Amazon 发布了新 API—— AppStream API ,可以使用它通过编程的方式管理托管在 Amazon AppStream 平台上的应用。Amazon 选择使用 HAL 媒体类型构建了该 API。HAL 是一种具有简约超媒体特点的媒体类型,用于构建设备到设备之间的 API。在采用超媒体作为公共产品实现技术的大型企业当中,Amazon 是其中之一。

虽然在 API 领域中,超媒体 API 是一个很热的话题,但其倡导者也经常被问起一个问题,即它在现实世界中的适用范围。针对该技术曾经有过很多研究和讨论,超媒体 API 也是目前 API 生态系统的一小部分。Amazon 的 CEO,Jeff Bezos,以让他的团队使用 SOA 风格构建其产品而出名,最终打造了大量对内和对外的 API。这份对通过 HAL 实现超媒体技术的信任,而且出自一家科技大公司,足以使那些超媒体的支持者精神振奋。

但是超媒体社区当前需要解决一个问题,那就是如何描述超媒体。典型描述超媒体服务的方法是提供一种媒体类型定义,别无其他。但是该方法与其他架构风格明显不同,所以超媒体社区正努力寻找其他策略来弥补该差距。

AppStream API 团队通过四个主要部分来描述 API:头部值、错误码、顶级资源和链接关系。这与传统的 REST 风格服务有所不同,REST 风格服务专注于使用 HTTP 状态码、URL 和参数的组合。但是该方式与传统超媒体方式非常接近。在 HAL 的讨论邮件列表里,HAL 用户在这里讨论 HAL 标准以及其用法,Andrés Freyría Cedeño 这样说道:

我对文档的直觉反应就是沿着这条线往下走,“如果超媒体 API 成为标准,这能充分描述超媒体 API”。基于目前的技术水平,我认为缺乏充分的可供开发人员使用的配套资源。

随着超媒体成为公认的 API 模式,我们看看这种趋势如何继续。

HAL 是一种媒体类型,IETF 正在将其标准化。HAL 最初由 Mike Kelly 创作,致力于向 XML 和 JSON 提供一种简单易懂的公约集合,用于描述资源对另一个资源的链接。

下面是 HAL 响应的样例,摘自标准草案:

复制代码
{
"_links": {
"self": { "href": "/orders/523" },
"warehouse": { "href": "/warehouse/56" },
"invoice": { "href": "/invoices/873" }
},
"currency": "USD",
"status": "shipped",
"total": 10.20
}

HAL 定义了两个预留的顶级属性,_links 和 _embedded。你可以从这里查看_links。在上面的对象中,HAL 标准定义了链接的组成方式。在该样例中,你可以看到虚构的"订单"资源的链接,该“订单”链接到它所存储的仓库和与之相关联的发票。


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-03-27 21:02907
用户头像

发布了 28 篇内容, 共 80178 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

SAP UI5 BarcodeScannerButton 的初始化逻辑 - feature 检测,Cordova API 检测等逻辑

Jerry Wang

前端开发 Fiori SAP UI5 ui5 11月月更

【LeetCode】被围绕的区域Java题解

Albert

算法 LeetCode 11月月更

快出数量级的性能是怎样炼成的 审核中

jiangxl

程序员买啥游戏机,自己动手做一个体感小游戏

华为云开发者联盟

人工智能 华为云 企业号十月 PK 榜 体感小游戏

超级App们有一个共同的技术特点

Onegun

小程序容器 超级app 小程序化

webpack高级配置

Geek_02d948

webpack

数据标准化红宝书权威发布!一文速读核心内容~~

博文视点Broadview

计算机网络:数据报与虚电路

timerring

计算机网络 11月月更 数据报 虚电路

赛迪网|专注财务全流程数字化,元年科技PaaS平台再上新台阶

元年技术洞察

方舟

程序员的浪漫(代码猜诗词)

叶秋学长

程序员 11月月更 诗词 专属浪漫

一文彻底读懂webpack常用配置

Geek_02d948

webpack

“企业级零代码黑客马拉松”决赛圆满落幕

明道云

黑客 零代码 无代码 黑客马拉松 黑客松

这是你没见过的MindSpore 2.0.0 for Windows GPU版

华为云开发者联盟

人工智能 华为云 企业号十月 PK 榜

OKR之剑·实战篇01:我们的OKR制定落地

vivo互联网技术

团队管理 OKR 目标管理

一文全面了解火山语音无监督预训练技术的落地实践

科技热闻

Vue-组件详解

格斗家不爱在外太空沉思

vue.js 组件化 11月月更

深聊Nodejs模块化

coder2028

node.js

如何使用清源CleanSource SCA建立软件物料清单(SBOM)

安势信息

SCA 软件物料清单 SBOM 清源CleanSource SCA

体验一把 Flowable 三种常见网关

江南一点雨

Java spring springboot flowable JavaEE

理解NodeJS多进程

coder2028

node.js

在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升

汀丶

nlp 文本分类 ernie

小程序如何开通流量主

源字节1号

微信小程序 软件开发 小程序开发

深度阐述Nodejs模块机制

coder2028

node.js

【C语言】auto 关键字

謓泽

11月月更

你需要知道的webpack高频面试题

Geek_02d948

webpack

令人头疼的Javascript隐式&强制转换

hellocoder2029

JavaScript

数据中台的终点是DataOps还是DaaS?

雨果

数据中台 DataOps DaaS

文盘Rust -- 把程序作为守护进程启动

京东科技开发者

rust 后端 进程 守护进程 rust语言

前端懒加载和预加载

hellocoder2029

JavaScript

敏捷开发模式下如何快速提升产品质量

敏捷开发

敏捷 敏捷开发 软件测试

从历史讲起,JavaScript 基因里写着函数式编程

掘金安东尼

前端 11月月更

Amazon选择HAL作为AppStreamAPI的媒体类型_架构_Steve Klabnik_InfoQ精选文章