写点什么

HATEOAS 作为领域特定协议描述的引擎

  • 2009-06-09
  • 本文字数:783 字

    阅读完需:约 3 分钟

要解释清楚 HATEOAS,可是出了名的难缠,为了更为容易的解释它,Nick Gall探讨了 将它作为领域特定协议描述来进行表达这一观点。根据他的说法,HATEOAS 从传统上被描述为:

…着重强调 HATEOAS 要求每个服务器响应都必须不仅包含被请求的数据 - 还必须包含控制信息 (以特殊标记的 URL 形式) 来描述下一个被允许的与服务器交互的集合。正是这一附加的信息 (最小的情况下仅仅是对于更多数据的链接) 将普通的媒体变为了超媒体。

Nick 解释了他是如何以标识–Identifiers (Uri),格式 --Formats (HTML),和协议–Protocols (HTTP) 这种 (IF and P) 的方式来看待 Web 接口 (以及相应的 RESTful 接口) 的。根据他的说法,尽管使用 HATEOAS 的 RESTful 应用可以被看作这三个部件 (IF and P) 的总和,但在理解它的时候将超媒体作为一个领域特定协议描述来思考可能更为合适。他指出了 Jim Webber 的“ Rest 巴克”案例 / 演示,在其中叙述了用超媒体来做协议描述

乍一看这可能很不直观,因为我之前说在万维网里 HTTP 是协议而 HTML 是格式。但是 URL,HTML,HTTP 只是描述领域特定标识,格式,和协议的一般性描述语言。因此,可以把特定的 HTML 页面组织成的 web 想像成一个领域特定协议。

将“超媒体描述协议”这一观念与 WS-BPEL 1.1 规范 WADL 进行比较是不可避免的。他表示:

其基本的差别在于 WS-BPEL 是基于一次性地以带外的方式 (out of band) 预先将整个静态协议和盘托出的概念。而 HATEOAS 是基于逐步进展的描述这一观念,我认为一个更好的术语应当是即时协议描述 (Just In Time)。[…] 我可以说“每个服务器渐进的响应自描述了当前的协议。”

即时协议描述相对于预先描述有利有弊,表现在工具支持以及这些接口的可发现性上面。“超媒体描述协议”是否是考虑HATEOAS 观念的新思路呢,并且它是否更易于理解呢?

查看英文原文: HATEOAS as an engine for domain specific protocol-description

2009-06-09 09:432692
用户头像

发布了 133 篇内容, 共 37.4 次阅读, 收获喜欢 1 次。

关注

评论

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

ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 导致的数据不一致问题

阿里巴巴云原生

zookeeper 阿里云 开源 云原生

MySQL深分页问题原理与三种解决方案

做梦都在改BUG

Java MySQL 数据库

一文了解获得 Zebec Labs 投资的 Coral Finance,空投计划或在不久推出

西柚子

五张图带你看透Redis数据结构

做梦都在改BUG

K8s 安全是云安全的未来

HummerCloud

Kubernetes k8s

MATLAB与Simulink

袁袁袁袁满

三周年连更

GitHub爆赞!阿里P9架构师的JDK源码笔记也太强了!

做梦都在改BUG

Java 源码 jdk 高并发

公开下载 | 300页《Java面试宝典》,收藏近万,多位翰林院成员推荐

Java你猿哥

Java MySQL spring 面试 ssm

AI 作画火了,如何用 Serverless 函数计算部署 Stable Diffusion?

阿里巴巴云原生

阿里云 Serverless 云原生 AIGC

2023年互联网Java面试题最新整理附答案

架构师之道

Java 面试

云原生技术实践营「微服务X消息队列专场」

阿里巴巴云原生

阿里云 微服务 云原生 消息队列

一文了解 Zebec Labs 投资的 Coral Finance,空投计划或在不久推出

股市老人

爆赞!GitHub上久经不衰的经典教程:Springboot精髓参考指南手册

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

KubeVela 稳定性及可扩展性评估

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

太强了!牛客网开源1240页字节算法实录,无意中掀起GitHub刷题热潮

做梦都在改BUG

Java 数据结构 算法 LeetCode

分布式事务的21种武器 - 5

俞凡

架构 云原生

https和http有什么区别?

海拥(haiyong.site)

三周年连更

面试官:一千万的数据,你是怎么查询的?

做梦都在改BUG

基于Alpine制作Tomcat的Docker镜像

清康

运行第一个程序Hello world

鸿蒙之旅

OpenHarmony 三周年连更

【Python实战】Python采集热搜数据

BROKEN

三周年连更

查询最新汽车新闻资讯

DS小龙哥

三周年连更

如何使用nobelium 1小时快速搭建你的私人博客

黑微狗‮‮

Blog nobelium

appuploader 入门使用

雪奈椰子

Redis数据类型及底层大剖析

做梦都在改BUG

Java 数据库 redis 缓存

Alibaba内网“疯狂”传阅的P8开源出的SpringBoot入门到进阶小册

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

声网 Token 鉴权机制,以及常见的问题

声网

三种常用的以太网端口链路类型:Access、Hybrid和Trunk

wljslmz

网络 三周年连更

什么是数据库分片?

Java架构历程

Java 数据库 三周年连更

“双智天花板”闪耀鹏城,问界M5智驾版深圳首场尊享品鉴会成功举办

Geek_2d6073

HATEOAS作为领域特定协议描述的引擎_SOA_Dilip Krishnan_InfoQ精选文章