BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Steve Klabnik 关注 0 他的粉丝 ,译者 王振峰 关注 0 他的粉丝 发布于 2014年3月28日. 估计阅读时间: 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)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT