写点什么

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:432666
用户头像

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

关注

评论

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

《详谈·张勇》

石云升

读书笔记 三周年连更

Apache Doris 1.2.4 Release 版本正式发布|版本通告

SelectDB

数据库 大数据 数据分析 Doris 联邦查询和分析

iOS MachineLearning 系列(8)—— 图片热区分析

珲少

和ChatGPT结对完成VS CODE插件项目分享

Marvin Ma

vscode 插件 插件开发 ChatGPT

ChatGPT 在 Python WEB 的Prompt项目分享

Marvin Ma

Python 开发 ChatGPT

Java 中的 null 到底是什么?

Java架构历程

Java 三周年连更

干货|SpringBoot JMS(ActiveMQ)API实践应用详解

浅羽技术

Apache 中间件 ​ActiveMQ 消息列队 三周年连更

Django笔记十八之save函数的继承操作和指定字段更新等实例方法

Hunter熊

Python django save auto_increment primary key

挑战 30 天学完 Python:Day13 列表推导式和Lambda

MegaQi

挑战30天学完Python 三周年连更

iOS MachineLearning 系列(9)—— 人物蒙版图生成

珲少

音视频八股文(7)-- 音频aac adts

福大大架构师每日一题

音视频 流媒体

中国厨房更净一步:一场科技“下凡”带来的方太式浪漫

脑极体

场景篇-ChatGPT帮我实现发送公众号推文

Marvin Ma

微信公众号 代码生成 ChatGPT

Go 语言中没有枚举类型,但是我们可以这样做

陈明勇

Go golang 枚举 Enum 三周年连更

2023移动端技术探索

轻口味

android 移动端 行业趋势 三周年连更

Git 速查表:初学者必备的 12 个 Git 命令

Se7en

ChatGPT-4!又双叒叕写了一本量化交易的书(附下载)

量化投资与机器学习

机器学习 量化投资 ChatGPT4 对冲基金 Quant

如何在 Linux 中查看正在运行的进程?这三个命令轻松实现!

wljslmz

Linux 三周年连更

Bitmap引起的OOM问题

梦笔生花

App 三周年连更 Out Of Memory

在oracle apex中的Dialog的做法(第一部门):

back_wang

oracle dialog oracle ebs ebs

华为阅读联手20余家头部内容平台,共建数字化阅读

最新动态

2023 年要避免的 17 个致命的网站设计错误

海拥(haiyong.site)

三周年连更

Selenium操作已经打开的浏览器

IT蜗壳-Tango

三周年连更

一键生成rpc网关服务项目代码,让你轻松实现跨语言、跨平台的服务调用

vison

微服务 Go 语言 gin 代码自动生成 rpc gateway

sdn网络

乌龟哥哥

三周年连更

场景篇-ChatGPT帮我搭建博客网站并自动写博客!

Marvin Ma

博客 ChatGPT

NCCL源码解析③:机器内拓扑分析

OneFlow

2022-04-27:用go语言重写ffmpeg的remuxing.c示例。

福大大架构师每日一题

golang ffmpeg

《爱在黎明破晓前 | 我有话要说》

后台技术汇

三周年连更

Go的内存模型:如何保证并发读写的顺序性?

Jack

从软件哲学角度谈 Amazon SageMaker

亚马逊云科技 (Amazon Web Services)

Amazon SageMaker

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