curl https://api.github.com 超媒体API的目标之一,是让客户端在不重新便编写代码的前提下动态调整所用的端点。...使用jq可以在命令行中解析JSON jq安装方式 os系统可以用brew brew install jq 示例用法: curl https://api.github.com | jq '.current_user_url...' curl -s https://api.github.com/users/xrd/repos | jq '.[0].owner.id' cURL的调试开关 使用 -i 开关打印请求头部 curl.../repos/twbs/bootstrap -H "If-Modified-Since: Sun, 11 Aug 2013 19:48.59 GMT" curl -i https://api.github.com...callback=myCallBack"> 指定响应的内容格式 URL='https://api.github.com/repos/rails
我们要关注的是 API 能否正确将 HTTP 作为应用程序协议并尽可能利用超媒体。通过启用超媒体,您可以创建可自我发现的 API。这没有为不提供文档找借口,但是 API 在可更新性方面更灵活了。...由于超媒体和链接,客户端与服务器端的业务工作流已取消关联。 而且,可以使用超媒体和链接改进 API 设计的可演变性。随着服务器上业务工作流的不断完善,它可以提供用于新功能的其他链接。...此模型允许任意 Web API 通过基于不同因素(如用户权限或客户端要使用的版本)提供新表单来自由演变。 用于 XML 和 JSON 的超媒体?...中支持超媒体 在前文中,我们讨论了在设计 Web API 时要遵循的一些超媒体原理。...来创建超媒体 Web API,网址为 github.com/howarddierking/RestBugs。
PSR-13 超媒体链接 在 HTML 和各种 API 格式的上下文中,超媒体链接已经变成 Web 越来越重要的一部分。...然而遗憾的是,没有一种通用单一的超媒体格式,也没有一种通用的方式来表示链接间的格式。 该规范旨在为 PHP 开发人员提供一种简单的、通用的方式来表示一个独立于所使用的序列化格式的超媒体链接。...这反过来又允许系统将超媒体链接的响应序列化为一种或多种有线格式,而不依赖于决定这些链接应该是什么的过程。...2119 RFC 4287 RFC 5988 RFC 6570 IANA Link Relations Registry Microformats Relations List 规范 基本链接 一个超媒体链接至少是由这些组成的...有些超媒体格式支持模板链接而有些则不支持,并且可能有一种特殊的方式来表示链接是一个模板。一个不支持 URI 模板格式化程序 必须 忽略它遇到的任何模板的链接。
依照官网的介绍,总的来说,IPFS 就是一种点对点超媒体协议,它可以使网络更快、更安全、更开放 本质上来说,它就是一种去中心化互联网(Peer to Peer) ≈ P2P 没错,就是孽种 P2P 下载器
要遵循REST的原则, protocol buffers 应作为一个新的超媒体类型的代表。 在当前版本(.NET 4) 的Windows通讯基础(WCF),包含一个新的媒体类型,需要相当数量的努力。...推荐大家假期可以看下这本书《REST实战》http://book.douban.com/subject/6854551/ 下面我们来介绍如何使用Google Protocol Buffers,只定义一个超媒体类型...ProtoBufferFormatter: 自定义超媒体类型是通过创建自定义的MediaTypeFormatter,实现OnWritetoStream() 和 OnReadFromStream() 方法进行序列化和反序列化处理...这个例子我们使用入门:构建简单的Web API 的代码和WCF Web API Preview 6。...ProtoBuf序列化的压缩对比 Android上GTalk以及Push机制的XMPP数据选择使用protobuf格式而非XML Leverage T4Scaffolding for WCF Web API
REST 与传输协议无关(实际上它并不限于 HTTP),而且真正的超媒体驱动的服务不需要预定义其操作(因为它们可以在运行时动态发现)。 “这是一个 HTTP API,不是 REST。这里没有超媒体。”...我将在以后的博文中详细介绍它们,和其他针对超媒体 API 的新兴解决方案。 在本博文中,我会只概述一个理论上的超媒体 API 的工作机制。...我之所以说是理论上的,是因为截至 2021 年,超媒体 API 尚未走出学术界,成为现实成果。 未来的超媒体 API 将由自动化代理消费,其消费方式与当今人类与网站交互的方式完全相同。...为一个超媒体 API 开发的客户端应用程序可以很容易地分叉和修改为另一个由超媒体驱动的 Web 服务。能够使用通用语法消费任何超媒体 API 的“智能客户端”可能成为现实。...超媒体 API 也可以是 HTTP API,但这不是必需的。 截至 2021 年,虽然存在一些 bug 多多的演示应用,但真正的,由超媒体驱动的智能客户端的开发仍局限在纯粹的学术尝试层面。
RESTful Web 客户端是整个 REST 风格应用(服务端和客户端)的一部分,服务端已经有不少著作,《RESTful Web Clients :基于超媒体的可复用客户端》则是 HATEOAS 的RESTful...———— 本文摘自新书《RESTful Web Clients:基于超媒体的可复用客户端》。...本书包括以代码为中心的章节信息和对相关重要主题的探索,比如表述器模式、人机交互模型和 Web API 在版本控制上的挑战等。直击下方阅读原文,开启架构全新境界,体悟开发深度思辨。...之前很多REST相关书籍聚焦于如何打造服务端的RESTful API,本书则着重研究RESTful客户端,介绍了如何把一个针对服务端规约硬编码的定制客户端重构为一个支持HATEOAS的通用客户端,并提供了多格式支持...、超媒体类型、版本化、微服务等相关问题的全面指导。
超媒体作为应用程序状态的引擎(HATEOAS):REST架构风格中,客户端是通过超媒体与服务器端动态提供的一个“应用网络”来进行交互的。...这些链接就是超文本,而超媒体就是超文本的泛化。针对API来说,它就是程序状态的引擎。换句话说,超媒体会驱动如何消费和使用API,它会告诉API消费者使用这些API能做什么,例如:能删除这个资源吗?...Level 3,超媒体。...这意味着,API支持HATEOAS(超媒体作为应用状态的引擎, Hypermedia as the Engine of Application State),这也是统一资源接口/界面约束里面的一条。...也就是说只有你的API达到了Level 3水平之后,才可以谈论你的API是不是RESTful API。
REST的主要特性之一是它是超媒体使能的。事实上,超媒体和REST的关系是如此紧密,以至于Roy Fielding曾经声明,如果API不支持超媒体,那么从技术上讲就不是RESTful。...超媒体意味着在REST API中,客户端和服务器是松耦合的,这使客户端和服务器在资源操作方面获得了极大的自由。也因此,快速迭代、服务器进化、资源弹性等元素才得以实现。...白小白: 所谓超媒体,即超文本+多媒体,这里借用了超文本的概念并在其基础上有所延伸。1963年,德特•纳尔逊(Ted Nelson)创造了术语“超文本”。...超媒体的概念在后文还将解决大量与GraphQL相关的问题。...(来自成富的文章 https://dwz.cn/X6VG4lCS)所以,超媒体这个概念对于REST是如此的重要,也响应了前文讲到的“Roy Fielding曾经声明,如果API不支持超媒体,那么从技术上讲就不是
Spring认证指南-了解如何使用 Spring 创建超媒体驱动的 RESTful Web 服务。...(Spring中国教育管理中心) 构建超媒体驱动的 RESTful Web 服务 本指南将引导您完成使用 Spring 创建“Hello, World”超媒体驱动的 REST Web 服务的过程。...超媒体是 REST 的一个重要方面。它使您可以构建在很大程度上解耦客户端和服务器的服务,并让它们独立发展。为 REST 资源返回的表示不仅包含数据,还包含指向相关资源的链接。...你将建造什么 您将使用 Spring HATEOAS 构建一个超媒体驱动的 REST 服务:一个 API 库,可用于创建指向 Spring MVC 控制器的链接、构建资源表示并控制如何将它们呈现为支持的超媒体格式...您刚刚使用 Spring HATEOAS 开发了一个超媒体驱动的 RESTful Web 服务。
使用超媒体作为应用状态的引擎(HATEOAS) 其中使用超媒体作为应用状态的引擎(HATEOAS)是一种强化自描述性的方法。...这提高了系统的灵活性和可扩展性,因为服务器端的变更不会影响客户端的行为,只需客户端遵循超媒体链接即可。...HATEOAS还促进了API的自文档化,因为超媒体本身包含了关于资源和操作的信息,减少了对外部文档的依赖。...这个案例展示了如何在电子商务平台中应用RESTful设计原则,通过资源的清晰定义、超媒体引擎的使用、版本控制等方式,实现了一个灵活、可维护且易于理解的API。...在实际应用中,通过资源的清晰定义、超媒体引擎的使用、版本控制等策略,如电商平台案例所示,RESTful设计提供了一种清晰、可维护的API设计方式,减少了系统耦合度,提高了开发效率和可用性。
起源 REST 是 REpresentational State Transfer的首字母缩写,是分布式超媒体系统(distributed hypermedia systems)的一种架构风格 。...符合 REST 架构风格的 Web API(或 Web 服务)是 REST API。...标准 image.png 1.统一接口 一旦开发人员熟悉了您的一个 API,他应该能够对其他 API 遵循类似的方法。...[超媒体作为应用程序状态的引擎 ] 超文本/超媒体可用,是指在访问资源后,客户端应能够使用超链接查找其当前可采取的所有其他操作。 2....别担心; 你仍在制作一个 RESTful API——但不是“真正的 RESTful”。
本书内容包括: 无服务器计算的初始步骤 重要的设计模式和架构 编写 AWS Lambda 函数并使用 API Gateway 使用像 Auth0 和 Firebase 这样的关键服务来组合无服务器应用程序...保护、部署和管理无服务器架构 《RESTful Web Clients:基于超媒体的可复用客户端》 ?...[美] Mike Amundsen 著 曾著 徐必涛 译 适读人群 :web及客户端的学习者和开发人员 强大的基于Web的REST和超媒体风格的API变得日益普遍,但很多开发者却依赖定制的客户端代码,并没有将相同的技术和模式应用到超媒体客户端中...将仅含HTML的Web应用转换为JSON API服务 克服维护普通JSON风格客户端应用的挑战 使用表述器模式将输出格式与内部对象模型解耦 探索使用HAL(超文本应用语言)构建的客户端应用 用请求、解析...、等待循环(RPW)模式解决可重用客户端问题 理解使用Siren内容类型构建客户端应用的利弊 通过采用一种与时俱进的设计美学来处理API的版本化 比较JSON、HAL、Siren和Collection+
AngularJS 是一款流行的前端 JavaScript 框架,提供了丰富的 API 接口,用于实现前端应用的各种功能。...本文将详细介绍 AngularJS 的 API,包括模块 API、指令 API、服务 API、过滤器 API、路由 API 等内容,帮助开发者充分了解和熟练运用 AngularJS 的各项功能。1....下面是一些常用的模块 API:(1) angular.module使用 angular.module 方法来创建一个模块。...总结本文详细介绍了 AngularJS 的 API 接口,包括模块 API、指令 API、服务 API、过滤器 API、路由 API 等。...通过学习和掌握这些 API,开发者可以更加灵活地使用 AngularJS 构建各类前端应用。希望本文对您了解和使用 AngularJS API 有所帮助。
下面是我们列举的一些指标,来比较这两种风格: 颜值 设计性 API 定义语言 可预测性和语义 超媒体性 可缓存性 可用性 颜值 ?...看起来两种风格都可以设计出丑的API,也都可以设计出美的API。平手。 设计性 设计RPC API看起来更容易: 当你处理一个现有的系统时,因为它通常面向操作,所以基于RPC的API与之天然匹配。...但RPC API的设计需要设计人员严格的实现一致性API,因为实际上它没有什么约束。完全依赖于设计人员的一致性执行能力。 如果你主要是处理数据,REST API可能更容易一些。...超媒体性 这两种风格都是使用的HTTP的请求,所以都可以设计出超媒体(hypermedia)的API。 平手。 可缓存性 我们经常可以在网上看到选择REST的一个致命的理由就是http 缓存。...总比分 指标 胜出方 颜值 平手 设计性 平手 API 定义语言 平手 可预测性和语义 REST 超媒体性 平手 可缓存性 平手 可用性 平手 REST真的就赢了吗?
资源在浏览器中以超媒体的形式呈现,通过点击超媒体中的链接可以获取其它相关的资源或者对当前资源进行相应的处理,获取的资源或者针对资源处理的响应同样以超媒体的形式再次呈现在浏览器上。...由此可见,超媒体成为了驱动客户端会话状态的转换的引擎。 借助于超媒体这种特殊的资源呈现方式,应用状态的转换体现为浏览器中呈现资源的转换。...如果将超媒体进一步抽象成一般意义上的资源呈现(Representation )方式,那么应用状态变成了可被呈现的状态(REpresentational State)。...实际上这可以视为一份超文本/超媒体文档。当用户得到这样一份文档的时候,可以利用自身的内容获得某部影片基本的信息,还可以利用相关的“链接”得到其它相关内容的详细信息。... 24: Fielding在他的论文中将REST定位为“分布式超媒体应用”的架构风格,而超媒体的核心就是利用“链接”相关的信息结成一个非线性的网,所以从一点也可以看出
换句话说,应用程序状态引擎(以及 API)不是由超文本驱动的,那么它就不能是 RESTful 并且不能是 REST API。时期。是否有一些损坏的手册需要修复?...URI 来导航 API。...介绍Spring HATEOAS,这是一个 Spring 项目,旨在帮助您编写超媒体驱动的输出。...HAL 是一种轻量级媒体类型,它不仅可以编码数据,还可以编码超媒体控件,提醒消费者注意他们可以导航的 API 的其他部分。...在这种情况下:将超媒体添加到您的服务中,而无需对事物进行硬编码。在这个阶段,您已经创建了一个实际生成超媒体驱动内容的 Spring MVC REST 控制器!
微软也发布过关于如何设计 REST API 的开发指南,但是不幸的是,REST 的创始人 Roy Fielding 认为微软的 REST API 规范与 REST 没有多大关系。...本文假设读者已经具备基本的 REST 和 Web 知识,哪怕你们现在认为 HTTP API 就是 REST API 也可。...REST 用以指导基于网络的分布式超媒体系统的设计和实现,Web(即万维网)就是一种典型的分布式超媒体系统。...如果资源的 URI 发生了变化,服务器应该使用超媒体引导客户端访问新的 URI 或提示对应信息。...一切都有可能变化,只有超媒体的状态迁移语义能够长期保持稳定。”
28.1.12 Spring HATEOAS 如果您开发使用超媒体的RESTful API,Spring Boot为Spring HATEOAS提供了适用于大多数应用程序的自动配置。...自动配置取代了使 用 @EnableHypermediaSupport 并注册多个beans以简化基于超媒体的应用程序的需求,包括 LinkDiscoverers (用于客户端支持) 和 ObjectMapper...WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api...与Spring MVC不同,它不需要Servlet API,完全异步且无阻塞,并 通过Reactor项目实现Reactive Streams规范。 Spring WebFlux有两种版本:功能和注释。
此参考列出了 /api/mgmnt/ 服务中的端点,所有这些端点都适用于较新的 REST 服务。下表总结了端点并指出它们是否也适用于手动编码的 REST 服务。...DELETE /api/mgmnt/v2/:ns/:app删除 REST 服务YESnoGET /api/mgmnt/列出此服务器上启用 REST 的 Web 应用程序YESYESGET /api/mgmnt...规范noYESGET /api/mgmnt/v2/列出此服务器上的 REST 服务(包括任何没有关联 Web 应用程序的服务)YESnoGET /api/mgmnt/v2/:ns列出命名空间中的 REST...GET /api/mgmnt/ – 返回一个数组,其中包含有关所有命名空间中启用 REST 的 Web 应用程序的信息。...GET /api/mgmnt/v2/:namespace/:application/ – 返回给定 REST 服务的 OpenAPI 2. 规范。
领取专属 10元无门槛券
手把手带您无忧上云