BT

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

通过超媒体升级REST Web API

| 作者 Jan Stenberg 关注 34 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2013年10月9日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Amy Palamountain在最近的新西兰技术大会上进行演讲时透露,当我们开始为自己的业务构建一个新的Web API的时候,我们想要构建一个相当优秀的API,在Internet上答案就是构建一个REST风格的API。
那么REST风格的API对于你的问题始终都是最佳解决方案么?Amy认为这依赖于它的上下文,但是对于公共API她的经验是,应该使用REST风格并且要基于HTTP和Web的核心理念构建。

SOAP和其他的RPC(远程过程调用)API与两种执行上下文有关,分别是客户端上的和服务器上的上下文,这种情况下客户端需要远程调用服务器上的一个操作。这是一种以操作为中心的设计,需要预先确定一种协议,但是这样客户端和服务器就紧耦合了。Amy认为对于公共API而言这是不合适的,因为缺乏可用性和灵活性,例如如果服务器上发生了变化那么客户端就很有可能会无法工作。

Amy认为从RPC风格中解脱出来的第一步是将操作转移到暴露领域概念的资源中,例如实体。这种移动的另一部分是拥抱HTTP和URI,通过实现和HTTP规范更加一致的API增强它们的可用性并使其更加容易使用。

但是如何使用内置到客户端中的API依然有一些固有的问题,资源之间的关系变化依然会破坏客户端并且需要重新部署。

Amy策略的第二步是添加超媒体,使用链接(Links)显示资源是如何关联的。在一个Web API中使用链接确保包含所有需要的信息,没有带外的信息。超媒体解决了固有的问题,因此应该在客户端内部:

  • 链接显示资源之间是如何关联的
  • 链接显示如何与问题空间交互,以及下一个可能的操作
  • 链接能够根据发展情况动态地对问题空间中的选项进行增加和移除

但是有一些实际的问题需要考虑,特别是在客户端上。超媒体API需要超媒体驱动的客户端,客户端必须理解服务器使用的媒体类型。媒体类型描述了链接和表单等内容的语义含义。

在她的呈现中,Amy使用了一个带有一个服务器和两个客户端的示例,一个使用资源和URI,另一个使用超媒体,这两个都使用了ASP.NET Web API 框架通过C#语言编写。

查看英文原文Level Up Your REST Based Web API with Hypermedia

评价本文

专业度
风格

您好,朋友!

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