首页
学习
活动
专区
圈层
工具
发布

RESTful API设计之进阶篇:HATEOAS

概览 本文将重点介绍REST API的可发现性、HATEOAS及由测试驱动的实际场景。 2....要理解可发现性,您需要理解REST架构的主要约束HATEOAS(The Hypermedia As The Engine Of Application State);作为应用程序状态的 唯一驱动,REST...总之, *服务器应该具有足够的描述性,以便告诉客户端如何通过超文本来使用API *,在HTTP会话的情况下,它可能是Link头。 3. 可发现的场景(测试驱动) 那么,REST服务被发现是什么意思呢?...总结 我们已经看到了REST API是如何服务器根路径就完全被发现的,并且不需要有多深的了解——这意味着客户端可以通过GET服务器根路径来导航它。...下一步,所有状态更改都由客户端使用REST API在表述中提供的可用的和可发现的转换来驱动(因此具有表述性状态转换)。

79320

用ASP.NET Core 2.1 建立规范的 REST API -- HATEOAS

它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而 REST 服务本身的演化和更新也变得更加容易。...HATEOAS的优点有: 具有可进化性并且能自我描述 超媒体(Hypermedia, 例如超链接)驱动如何消费和使用API, 它告诉客户端如何使用API, 如何与API交互, 例如: 如何删除资源, 更新资源...-30T21:41:12.650Z" } 如果不使用HATEOAS的话, 可能会有这些问题: 客户端更多的需要了解API内在逻辑 如果API发生了一点变化(添加了额外的规则, 改变规则)都会破坏API...实际上Roy Fielding建议不要对RESTful API进行版本管理。 但是实际上很多人感觉还是需要对API进行版本管理的,因为需求肯定会一直变化的,API就会一直变化。...如果API的功能或业务逻辑变化了,HATEOAS会把这件事处理很好, API的消费者通过观察HATEOAS的这些东西,就不会对它造成破坏。

1.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

    它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而 REST 服务本身的演化和更新也变得更加容易。...HATEOAS的优点有: 具有可进化性并且能自我描述 超媒体(Hypermedia, 例如超链接)驱动如何消费和使用API, 它告诉客户端如何使用API, 如何与API交互, 例如: 如何删除资源, 更新资源...-30T21:41:12.650Z" } 如果不使用HATEOAS的话, 可能会有这些问题: 客户端更多的需要了解API内在逻辑 如果API发生了一点变化(添加了额外的规则, 改变规则)都会破坏API...API无法独立于消费它的应用进行进化....为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现.

    1.3K50

    HDFS Java 客户端 API

    客户端核心类 3. IDEA创建工程项目 4. 添加maven依赖和编译打包插件 5. 创建Junit单元测试 6. 创建文件夹 7. 执行报错:客户端没有权限 8. 创建文件夹完整代码 9....概述 HDFS在生产应用中主要是Java客户端的开发,其核心步骤是从HDFS提供的API中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件。 2....客户端核心类 Configuration 配置对象类,用于加载或设置参数属性 FileSystem 文件系统对象基类。针对不同文件系统有不同具体实现。该类封装了文件系统的相关操作方法。 3....执行报错:客户端没有权限 ?...void connect2HDFS() throws IOException { //设置客户端身份信息,以备在hdfs上进行操作 System.setProperty

    1.9K30

    聊天客户端(Chat Client) API

    上一课:Spring AI API介绍 ChatClient,它提供了一个流畅的 API,用于与 AI 模型进行通信。 它支持同步编程模型和响应式编程模型。...Fluent API 具有用于构建包含提示语组成部分的方法,这些提示语作为输入传递给 AI 模型。 包含用于指导 AI 模型的输出和行为的说明文本。从 API 的角度来看,提示语由消息集合组成。...这也演示了 Fluent API 中参数的使用,这将在本文档的后面部分中更详细地讨论。...对话历史记录:聊天模型的 API 是无状态的。如果你告诉 AI 模型你的名字,它不会在随后的交互中记住它。必须随每个请求一起发送对话历史记录,以确保在生成响应时考虑以前的交互。...InMemoryChatMemory 两个顾问实现使用该接口向提示提供对话历史记录的建议,它们在如何将内存添加到提示的详细信息上有所不同ChatMemory MessageChatMemoryAdvisor

    83400

    2020-5-11-HATEOAS简介

    HATEOAS解决什么问题 HATEOAS通过超媒体来提供客户端与服务器之间的交互。 即客户端可以通过一个简单的初始URI,并从返回值获取可以操作的其他信息。...在Richardson Maturity Model中,HATEOAS为于最高层,可以显著提升RESTful API的可发现性和响应的自解释性。...HATEOAS例子 说了这么多大家可能还不是很了解,这里我们举个例子。 假设我们有这么一个API,可以返回一个人和他孩子的名字。...此外如果之后服务端的约束变更为3个小朋友,那客户端除了尝试post也不能知道后端约束的变化。 使用HATEOAS 如果我们使用HATEOAS,这个例子会怎么样?...所以现在客户端可以更据返回的响应,决定自己的行为,真正实现了后端模型驱动。 HATEOAS实现 HATEOAS目前还只是一个guide,目前可以有各种类型的实现。

    90610

    RavenDB起步--客户端API(一)

    上一小节我们演示了一个简单的实例,从本篇文章开始我将通过两篇文章带领大家学习一下 RavenDB 常用客户端 API。...Document Store Document Store 是客户端 API 的主要入口点,它包括了包含所有客户端配置,包括序列化配置、故障转移行为、缓存选项等内容。...一般来说我们的开发环境是如果用在线上的话是不安全,我们需要以安全的模式在线上环境中运行 RavenDB ,这时我们可以使用 RavenDB 支持的 x509 客户端证书来进行身份验证。...X509 是一种自然的验证方式,并且一般来说 X509 客户端证书是基于每个应用程序/角色授予的。具体的身份认证我将会在后面的专题中进行详细讲解。

    78310

    建议看看这篇RestFul API简明教程!

    不过,为了更好地能跟别人扯扯 “RestFul API”我建议你还是要好好理解一下! 资源(Resource) :我们可以把真实的对象数据称为资源。一个资源既可以是一个集合,也可以是单个个体。...综合上面的解释,我们总结一下什么是 RESTful 架构: 每一个 URI 代表一种资源; 客户端和服务器之间,传递这种资源的某种表现形式比如 json,xml,image,txt 等等; 客户端通过特定的...3、过滤信息(Filtering) 如果我们在查询的时候需要添加特定条件的话,建议使用 url 参数的形式。...Hypermedia API 的设计被称为HATEOAS。...在 Spring 中有一个叫做 HATEOAS 的 API 库,通过它我们可以更轻松的创建除符合 HATEOAS 设计的 API。

    1.2K20

    架构之:REST和HATEOAS

    客户端可以通过返回的links继续向下获取更多的信息。...links会根据资源的不同发送变化,客户端不需要知道任何服务器端的逻辑,每个请求都包含了所有可以继续执行的操作,从而让客户端和服务器端彻底解耦。 在现实世界中,当您访问一个网站时,您会点击它的主页。...类似于人与网站的交互,REST客户端访问初始API URI并使用服务器提供的链接动态发现可用操作并访问所需的资源。客户不需要事先了解服务或工作流中涉及的不同步骤。...此外,客户端不再需要对各种资源的URI结构进行硬编码。 HATEOAS允许服务器在不中断客户端的情况下随着API的发展进行URI更改。...HATEOAS的格式 HATEOAS有两个比较重要的格式,分别是RFC 5988 (web linking) 和 JSON Hypermedia API Language (HAL)。

    87130

    RESTful API 设计最佳实践

    Web API 近几年变得越来越火,而简洁的 API 设计在多后端系统交互应用中也变得尤为重要。通常,会使用 RESTful API 来作为我们的 Web API 。...它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而 REST 服务本身的演化和更新也变得更加容易。...第四个层次(Level 3)的 Web 服务使用 HATEOAS。在资源的表达中包含了链接信息。客户端可以根据链接来发现可以执行的动作。...从上述 REST 成熟度模型中可以看到,使用 HATEOAS 的 REST 服务是成熟度最高的,也是推荐的做法。对于不使用 HATEOAS 的 REST 服务,客户端和服务器的实现之间是紧密耦合的。...而使用 HATEOAS 的 REST 服务中,客户端可以通过服务器提供的资源的表达来智能地发现可以执行的操作。

    86130

    2022就业季|Spring认证教你,如何使用 Spring 构建 REST 服务(三)

    换句话说,应用程序状态引擎(以及 API)不是由超文本驱动的,那么它就不能是 RESTful 并且不能是 REST API。时期。是否有一些损坏的手册需要修复?...URI 来导航 API。...只要保持链接结构,客户端仍然可以找到事物并与之交互。简化链接创建在前面的代码中,您是否注意到单个员工链接创建中的重复?为员工提供单个链接以及创建到聚合根的“员工”链接的代码显示了两次。...Spring HATEOAS 的所有模型的抽象基类是RepresentationModel. 但是为了简单起见,我建议使用EntityModel作为您的机制来轻松地将所有 POJO 包装为模型。...不讲 HAL 的客户端可以在使用纯数据时忽略额外的位。使用 HAL 的客户可以浏览您授权的 API。但这并不是使用 Spring 构建真正的 RESTful 服务所需的唯一内容。......

    1.4K30

    使用两种方法让 ASP.NET Core 实现遵循 HATEOAS 结构的 RESTful API

    它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而 REST 服务本身的演化和更新也变得更加容易。...HATEOAS的优点有: 具有可进化性并且能自我描述 超媒体(Hypermedia, 例如超链接)驱动如何消费和使用API, 它告诉客户端如何使用API, 如何与API交互, 例如: 如何删除资源, 更新资源...-30T21:41:12.650Z" } 如果不使用HATEOAS的话, 可能会有这些问题: 客户端更多的需要了解API内在逻辑 如果API发生了一点变化(添加了额外的规则, 改变规则)都会破坏API...API无法独立于消费它的应用进行进化....为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现.

    2.7K110
    领券