Jimmy Bogard在他的一系列博客帖子中表示:REST是一种定义良好的架构风格,它能够为我们带来许多益处,但也经常被误用于描述各种各样的Web API。他特别着重描述了实现一个从服务器到客户端的端到端超媒体解决方案所必需的步骤,包括如何选择一种富超媒体的媒体类型(media type)。

\\

Bogard是一位微软的MVP,他强调说,REST以及超媒体这种REST的约束会大大提高客户端与服务端API设计的复杂性。他认为只有在某些场景中才值得这么做,尤其是在客户端与服务端分别独立进行设计的情况下。如果客户端与服务端代码共存于一个源代码控制库,并且还是同时进行部署的,那么超媒体在这种情况下为他提供不了多少价值。

\\

至于如何选择一种媒体类型,Bogard认为有这么三种选择:

\\

  • 选择某个现有标准。 \\
  • 对某个现有标准进行扩展。 \\
  • 设计属于自己的媒体类型。 \

考虑到设计一种媒体类型所需的精力,这已远不是在一个项目中就能够完成的工作了,因此他倾向于尽可能选择一种标准的媒体类型。在对不同的媒体类型的能力进行比较时,他提到了Mike Amundsen所设计的H Factor,这项工具能够衡量某个媒体类型对于超媒体的支持等级,帮助他做出适合于当前场景的最佳选择。不过,他往往发现所选择的媒体类型无法满足他的所有需求,因此不得不对所缺失的部分进行扩展。

\\

Bogard认为服务端的设计与实现是非常直观的,这与创建一个纯粹的JSON API差别不大,只是增加了一个更丰富的超媒体模型的复杂性。通常来说,包含所选择的媒体类型的API在实现之后还要接受调用者的检验,从客户端的角度对其进行验收。

\\

至于客户端方面,Bogard在文中提到,他所见到的大多数REST示例虽然包含了服务端的API,但往往未能提供实际的实例,使客户端了解如何调用它们。在Bogard的示例中,他创建了一个web客户端,其中包含了一个基本的导航视图。 视图中包括了一些信息表,用户可通过这些信息配合在服务端响应中所包含的关系与链接查看详细的内容。服务端返回的响应中包括了大量的元数据,为了保持REST风格所提供的松耦合能力,客户端必须由这些元数据所驱动。但Bogard依然认为,客户端应当为某个特定的目的而设计,要打造一个泛用目的的客户端是非常无趣的。除了使用jQuery设计客户端之外,他还描述了如何使用React设计并实现客户端,由于React带有面向组件的特性,因此在Bogard看来,它能够非常完美地配合超媒体的使用。

\\

查看英文原文:Design of a Hypermedia REST API Server and Consuming Client

端到端的超媒体REST API设计相关推荐

  1. 服务端指南 | 良好的 API 设计指南

    设计一套良好的 API 接口. 原文地址:服务端指南 | 良好的 API 设计指南 博客地址:blog.720ui.com/ 版本号 在 RESTful API 中,API 接口应该尽量兼容之前的版本 ...

  2. API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

    API+|以API-First理论为基础,以API为核心构建数字化生态 摘要:华为云API Arts是API全生命周期一体化协作平台,支持开发者一站式高效实现API设计.API开发.API测试.API ...

  3. 蚂蚁金服 mPaaS 服务端核心组件体系概述:移动 API 网关 MGS

    根据<开篇 | mPaaS 服务端核心组件体系概述>,我们已经初步了解 mPaaS 平台后端各组件的核心架构体系. 而在 mPaaS 服务端众多组件中,移动 API 网关 MGS 是连接移 ...

  4. OpenCV textDetectionModel和textRecognitionModel API的端到端的实例(附完整代码)

    OpenCV textDetectionModel和textRecognitionModel API的端到端的实例 OpenCV textDetectionModel和textRecognitionM ...

  5. 谷歌发布端到端AI平台,还有用于视频和表格的AutoML、文档理解API等多款工具

    谷歌又有了大动作.在大洋彼岸的谷歌Cloud Next conference大会上,谷歌一口气发布了多款AI新品和工具,主要包括: 端到端的AI平台 用于处理视频和表格数据的AutoML Tables ...

  6. 如何使用Postman和Newman在CI环境中自动化REST API端到端测试

    Postman is a great tool to explore REST APIs. You can build requests and try them out to get quick f ...

  7. ICCV2021- 牛津大学新的预训练视频文本数据集WebVid-2M,设计用于端到端检索的联合视频和图像编码器!代码已开源!...

    关注公众号,发现CV技术之美 ▊ 写在前面 视频文本检索的挑战包括视觉网络结构的设计 和训练数据的性质 ,因为可用的大规模视频文本训练数据集 (例如HowTo100M) 是noisy的,因此只能通过大 ...

  8. 移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题

    移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题 参考文章: (1)移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题 (2)https://ww ...

  9. 心法利器[78] | 端到端任务的拆解设计

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里 ...

最新文章

  1. android stadio 快捷键最好的材料 android stadio大全 最牛逼的android stadio快捷键
  2. 【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】
  3. hdu 5311 Hidden String(find,substr)
  4. 第三十七期:如果你这样回答“什么是线程安全”,面试官都会对你刮目相看
  5. Spark 2.2 Core :TimSort 的原理与源码分析
  6. java实验多线程机制_使用Java多线程的同步机制编写应用程序 PDF 下载
  7. Linux下网络访问Telnet、SSH全攻略
  8. 堆栈的缓冲区溢出进不了系统_一文理解缓冲区溢出
  9. 时间戳TimeStamp处理
  10. Python常用模块之 json模块
  11. 【转载】史上最深(sàng)入(xīn)浅(bìng)出(kuáng)的IT术语解读【多测师_何sir】
  12. 思科交换机基础--11三层交换机ACL配置
  13. autoCAD数据库读写
  14. 通过id查用户名php,通过用户名称获取微博id
  15. Windows平台七牛批量上传工具使用教程
  16. 【深圳】工作5年,欠款1万5,是否还有必要待下去呢?
  17. 疫情下的企业应对之道:企业如何降本提质增效
  18. 基于simulink的无刷直流电机本体建模及六步逆变器控制
  19. 递归思想 | 俄罗斯套娃
  20. 自查自纠,铁腕亮剑,饿了么“食品安全月”强力启动

热门文章

  1. mysql 导出dmp文件_Mysql数据库的各种命令:
  2. 【转载】浅谈EDA验证工具
  3. php 函数返回多个值
  4. 牛客多校第六场-H-Pair
  5. SharePoint 2013 - Callout
  6. Linux时间同步+国内常用的NTP服务器地址
  7. wenbao与windows命令
  8. html学习文档-3、HTML元素
  9. java 的集合说明
  10. 【像程序员一样思考】 读书笔记2