BT

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

在RESTFul API中使用HATEOAS的好处

| 作者 Dilip Krishnan 关注 0 他的粉丝 ,译者 胡键 关注 0 他的粉丝 发布于 2009年4月25日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Sun公司的Craig McClanahan为什么现有“REST”API没有真正使用RESTful服务中的“超媒体即应用状态引擎(HATEOAS)”提供了答案。他从最近参与的Sun云计算API  设计中举例说明了这样做的好处。

我们一开始假设服务只能发布一个众所周知的URI(返回一个包含调用者可访问的云资源表示[representation]的表示,它也可以是一个URI链接)。通过检查这些表示就可以发现整个系统中的其他每个URI(包括所有完成状态改变的URI)。

Craig建议通过资源图来让超媒体给客户端提供指导;通过把资源及其关系描述成指向它们的超媒体,可以让交互式的Web应用完成用户可以完成的工作;让客户端有效地浏览资源表示,驱动应用状态的改变。他认为,这样设计的好处是:

  • 降低客户端编码错误。大约90%的错误出现在为服务器构造正确URI的过程中。典型错误是遗漏路径片断(Path Segment),以错误的顺序获取它们,或者忘记URL编码的东西。
  • 减少无效的状态转换调用。[……]举个例子[出自云计算API……],你只有“部署”了虚拟机(VM),才能去“启动”它。服务器知道URI发起了每次状态改变(通过POST),但是VM的表示只罗列出了由当前状态可以有效转换的那些状态转变的URI。
  • 无需破坏客户端就可进行细粒度演变。每次在编写REST API客户端时,都会对系统能做什么进行一些假设。但是,如果你仅记录那些“需要知道的表示内容”,再加上那些不会破坏先前行为的服务器端规定,你就能在不破坏所有客户端的情况下快速演变API,或者在服务器上同时支持API的多个版本。

Marc Hadley在他的帖子中对讨论进行了补充,提到可以使用WADL进行描述……

……一组URI和URI模板,依赖客户端去构建URI来访问它们需要的资源,云计算API只发布一个“根”URI,并记录下客户端可以在表示中哪个位置找到用来遍历服务的其他URI。

他描述了一种对Web应用进行文档化的可能方式,如Sun云计算API使用WADL,并通过例子解释了其想法。

  1. 使用资源类型描述每种资源,
  2. 对表示进行参数化,以标识内嵌于它们中的链接
  3. 定义每个内嵌于链接标识中的资源类型。

请阅读原贴,并可在rest讨论组中进行讨论。

查看英文原文:Advantages Of (Also) Using HATEOAS In RESTFul APIs

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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