低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

通过超媒体升级 REST Web API

2013 年 10 月 08 日

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

2013 年 10 月 08 日 08:142012
用户头像

发布了 321 篇内容, 共 103.9 次阅读, 收获喜欢 8 次。

关注

评论

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

ARTS打卡 第5周

引花眠

ARTS 打卡计划

架构师训练营 - 第 4 课总结 -20200627- 互联网架构设计

👑👑merlan

架构设计 互联网架构

极客时间 - 架构师培训 - 4 期作业

Damon

【源码系列】Spring Cloud Eureka

Alex🐒

源码 Spring Cloud Eureka

ARTS|Week 5 有效的括号、API和地图

Puran

LeetCode ARTS 打卡计划

每周学习总结 - 架构师培训 4 期

Damon

关于编码的一点“思考”

damnever

golang 思考 抽象 分层架构 编码

阿里待遇那么好,你为什么从阿里离职?

互联网架构师小马

Java 阿里巴巴 程序员 找工作 离职

阿里巴巴的发展史(组织变革+技术变革)

王锟

阿里巴巴

架构第四周 - 学习总结

J.Smile

极客大学架构师训练营

通过Python来获取北京市乡镇、街道行政区划数据

Puran

Python GIS geopandas QGIS 天地图

大型互联网公司技术方案与手段浅析

俊俊哥

分布式 高可用 大型软件 高并发 解决方案

架构师训练营 - Lesson Week 4

brave heart

极客大学架构师训练营

架构师训练营 -- 第四周作业

stardust20

架构师训练营 - 第四周 - 学习总结

stardust20

太厉害了!阿里年薪120W架构师整理的学习笔记,看完收获良多

互联网架构师小马

Java 学习 阿里巴巴 程序员 架构师

区块链冷链食品追溯系统

CECBC区块链专委会

区块链技术 上链 溯源 浙冷链

Week4 学习总结

wyzwlj

极客大学架构师训练营

清华百万年薪架构师,精心编写多线程与高并发实战PDF

互联网架构师小马

Java 程序员 多线程 架构师 多线程与高并发

SQL运行内幕:从执行原理看调优的本质

arthinking

MySQL 数据库

原来使用Postman如此简单,API测试之Postman使用全指南

软测小生

接口 Postman 接口测试 API API测试

消息队列(三)如何保证消息不被重复消费?

奈何花开

Java MQ 消息队列

架构师训练营 - 第四课作业 -20200701- 架构演化

👑👑merlan

极客大学架构师训练营

信息的表示与存储-浮点数的运算

引花眠

计算机基础

《架构师训练营》第四周总结

使用数据卷管理数据 | Docker 系列

AlwaysBeta

Docker 容器 数据 容器技术

学习总结 - 第 4 周

饶军

CECBC带你一图看懂区块链

CECBC区块链专委会

CECBC 区块链技术 去中心化

架构师课程第四周 作业

杉松壁

消息队列(二)如何保证消息队列的高可用?

奈何花开

Java MQ 消息队列

一文带你学会 Blob(含 7 个使用场景)

pingan8787

Java 前端 Web Blob

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

通过超媒体升级REST Web API-InfoQ