Hypermedia API的思想在于:API资源除了包含必要的返回值,还能告诉API消费者下一步领域模型拥有的能力和此时领域模型的状态,也就是API消费者接下来可以请求什么样的API。 ---- 三、实现Hypermedia API 根据上面的分析,我们尝试对trip API返回的资源进行第一版建模,一个最初的版本如下: public class TripResource { ---- 四、 如何优雅的消费Hypermedia API 按照本文提供的设计思路,因为我们设计好的API总能够返回下次可用的API列表,所以我们可以认为整个API列表是有层级关系的,服务端只需要提供一个最顶端的 } 当然,如果你API消费端是Javascript,你应该没法写出这样的API Navigator来帮你做类型保证,不过你可以写一个TypeScript版本的API navigator,一个典型的Hypermedia start.productHome) .followLink(product => product.products) .execute(); return products;} 本文从领域建模出发,描述了Hypermedia
Hypermedia 我们注意看它的第一句话: The WorldWideWeb (W3) is a wide-area hypermedia information retrieval initiative 大意是说www是一个为了让全世界都能访问大量文档的一个的超媒体信息检索计划,其中重点在于其提到的hypermedia。 我们看看它怎么解释hypermedia是什么的: Hypertext is text which is not constrained to be linear. Hypertext and HyperMedia are concepts, not products. hypermedia是web重中之重的一个角色,如果说没有它就没有今天的web也是不为过的。 2.
在你获得一个节点中的资源的同时,服务器还会返回给你这个节点的边:Hypermedia(超链接就是一种Hypermedia)。通过Hypermedia,你能够知道如何跳转到相邻的节点。 因为HATEOAS:服务端在返回上一个状态(资源)的时候,会返回所有相邻状态的Hypermedia,其中就包括“查看文章列表”这个Hypermedia。 客户端会展示所有相邻状态的Hypermedia供用户选择。 Hypermedia供用户选择(比如,在首页有一个导航栏,里面有几个链接) => 用户选择了某个Hypermedia(比如,点击了“查看文章列表”的链接) => 客户端请求“文章列表”资源 => 服务器返回“文章列表”资源的表示,以及相邻资源的Hypermedia => 客户端进入“文章列表”状态 => 客户端显示所有相邻状态的Hypermedia供用户选择(比如,在文章列表里,显示所有文章的链接
RESTful API 设计指南: 过滤信息 状态码 错误处理 返回结果 Hypermedia API ⑥ 过滤信息 如果记录的数量很多,服务器不可能都将它们返回给用户。 DELETE /collection/resource ⑩ Hypermedia API RESTful API 最好做到 Hypermedia,即返回结果中提供链接,连向其它 API 方法,使用户不查文档
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
Hypermedia API ret = { code: 1000, data:{ id:1, name:'小强', } } 建议大家使用
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
采用Hypermedia的API在响应(response)中除了返回资源(resource)本身外,还会额外返回一组Link。 然而大部分号称REST的API实际上并没有达到Richardson成熟度模型的第三个级别:Hypermedia。 而REST的发明者Roy Fielding博士更是直言HATEOAS是REST的前提, 这不是一个可选项,如果没有Hypermedia,那就不是REST。
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
相比之下,我们应该改用“HTTP API”和“hypermedia API”这两个说法,使用它们可以更好地区分两种不同的 Web 服务编程接口设计。 5你好,hypermedia API 要让一个 Web 服务接近真正的 RESTful,它对客户端的响应消息的负载就不能由任何旧的任意数据对象组成。 6“HTTP API”和“hypermedia API” 我们赶快让“REST API”这个术语走入历史吧。REST 的含义实在是太混乱了,想纠正它根本没戏。 我们今天所说的“REST API”应该重新分类为“HTTP API”或“hypermedia API”。 HTTP API 是围绕 HTTP 设计的。 即使在不断努力实现真正的 RESTful API 的背景下,“hypermedia”也是一种更好、更具表现力的分类。
HTMX - 回归基础 htmx-demo 适合人群: 你希望编写更少的 JavaScript 你希望代码更简单,更专注于 hypermedia(超媒体) HTMX 在 2023 年迅速崛起,在过去一年中获得了超多 如果你在HTMX[2]中工作,你将大部分时间在 hypermedia(超媒体)的世界中度过,以完全不同的视角看待网络开发,而不是我们通常对现代网络开发的重 JS 视角。 HTMX 利用了 HATEOAS(Hypermedia as the Engine of Application State)的概念,使开发人员可以直接从 HTML 访问浏览器功能,而不是使用 JavaScript
collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法。
collection/resource:返回更新后完整的资源对象 PATCH /collection/resource:返回更新后完整的资源对象 DELETE /collection/resource:返回一个空文档 Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,指向其他API方法,是的用户不查文档,也知道该怎么做。 rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),href表示API的路径,title表示API的标题,type表示返回类型 Hypermedia API
resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 十、Hypermedia API RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。 Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
WEB表现为三种形式,即超文本(hypertext)、超媒体(hypermedia)和超文本传输协议(HTTP)。