(Spring中国教育管理中心) 构建超媒体驱动的 RESTful Web 服务 本指南将引导您完成使用 Spring 创建“Hello, World”超媒体驱动的 REST Web 服务的过程。...你将建造什么 您将使用 Spring HATEOAS 构建一个超媒体驱动的 REST 服务:一个 API 库,可用于创建指向 Spring MVC 控制器的链接、构建资源表示并控制如何将它们呈现为支持的超媒体格式...它将以 JSON 表示的问候进行响应,该问候富含最简单的超媒体元素,即指向资源本身的链接。以下清单显示了输出: { "content":"Hello, World!"...name=World" } } } 响应已经表明您可以使用name查询字符串中的可选参数自定义问候语,如以下清单所示: http://localhost:8080/greeting?...您刚刚使用 Spring HATEOAS 开发了一个超媒体驱动的 RESTful Web 服务。
链接Links HATEOAS的一个非常重要的特征就是在resources资源中包含超媒体,而超媒体最简单的表示就是链接。 Spring HATEOAS为我们简化了封装Links的功能。...,然后需要在一个个的资源中加入link,Spring HATEOAS为我们提供了一个简单的类叫做RepresentationModel。...最简单的使用方法就是创建一个RepresentationModel的子类: public class BookModel extends RepresentationModel {...,URI templates,Link relations和RepresentationModel就是Spring HATEOAS的基础,掌握了他们基本上就掌握了Spring HATEOAS。...更多内容请参考 http://www.flydean.com/00043-springboot-hateoas-fundamentals/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现
Spring HATEOAS 的主要功能在于提供了简单的机制来创建这些链接,并与 Spring MVC 框架有很好的集成。...对于已有的 Spring MVC 应用,只需要一些简单的改动就可以满足 HATEOAS 约束。对于一个 Maven 项目来说,只需要添加代码清单1中的依赖即可。 清单 1....在创建资源类时,可以继承自 Spring HATEOAS 提供的 org.springframework.hateoas.Resource 类,Resource 类提供了简单的方式来创建链接。...Spring HATEOAS 的 HAL 支持 目前 Spring HATEOAS 仅支持 HAL 一种超媒体表达格式,只需要在应用的配置类上添加“@EnableHypermediaSupport(type...Spring HATEOAS 在 Spring MVC 框架的基础上,允许开发人员通过简单的配置来添加 HATEOAS 约束。
Web 相关组件要求 Spring MVC JAR 位于类路径中。其中一些甚至提供与Spring HATEOAS 的集成。...它还检测类路径上的 Spring HATEOAS 并为其注册集成组件(如果存在)。..." /> 基本网络支持 上一节中显示的配置注册了一些基本组件: A使用DomainClassConverterClass让 Spring MVC 从请求参数或路径变量中解析存储库管理的域类的实例。...Pageables 的超媒体支持 春天HATEOAS附带的表示模型类(PagedResources),它允许一个丰富的内容Page实例与必要的Page元数据,以及链接,让用户轻松地浏览网页。...对于 Spring MVC,必要的转换器在活动时会自动注册,@ EnableSpringDataWebSupport并且所需的依赖项在类路径中可用。
链接Links HATEOAS的一个非常重要的特征就是在resources资源中包含超媒体,而超媒体最简单的表示就是链接。 Spring HATEOAS为我们简化了封装Links的功能。...Spring HATEOAS中有一个LinkRelation类来表示。...,然后需要在一个个的资源中加入link,Spring HATEOAS为我们提供了一个简单的类叫做RepresentationModel。...最简单的使用方法就是创建一个RepresentationModel的子类: public class BookModel extends RepresentationModel {...,URI templates,Link relations和RepresentationModel就是Spring HATEOAS的基础,掌握了他们基本上就掌握了Spring HATEOAS。
Spring HATEOAS 的主要功能在于提供了简单的机制来创建这些链接,并与 Spring MVC 框架有很好的集成。...对于已有的 Spring MVC 应用,只需要一些简单的改动就可以满足 HATEOAS 约束。对于一个 Maven 项目来说,只需要添加代码清单 1中的依赖即可。 清单 1....在创建资源类时,可以继承自 Spring HATEOAS 提供的 org.springframework.hateoas.Resource 类,Resource 类提供了简单的方式来创建链接。...Spring HATEOAS 的 HAL 支持 目前 Spring HATEOAS 仅支持 HAL 一种超媒体表达格式,只需要在应用的配置类上添加“@EnableHypermediaSupport(type...Spring HATEOAS 在 Spring MVC 框架的基础上,允许开发人员通过简单的配置来添加 HATEOAS 约束。
热部署 简单来说,在开发时,修改了任何的代码,IDE将自动编译运行及发布;在发布时,当前发布不影响线上服务的正常进行。...开发热部署: Spring Loaded,在vm arg中添加 –javaagent: E:\xxx.jar -noverify; JRebel,热部署最佳工具,但是是收费的,不嗨森;spring-boot-devtools...端点名 描述 actuator 所有EndPoint列表,需加入spring HATEOAS支持 autoconfig 当前应用的所有自动配置 beans 当前应用中所有bean的信息 configprops...@RequestMapping映射的路径 shutdown 关闭当前应用(默认关闭) trace 显示跟踪信息(默认最新http请求) 通过http监控spring boot项目非常简单,只需添加如下依赖即可...自定义端点:通过继承AbstractEndpoint类并实现ApplicationContextAware接口,创建自定义的端点类并注册到spring即可。
其中一些甚至提供与Spring HATEOAS 的集成。...它还检测类路径上的 Spring HATEOAS 并为其注册集成组件(如果存在)。..." /> 基本网络支持 上一节中显示的配置注册了一些基本组件: A使用DomainClassConverter类让 Spring MVC 从请求参数或路径变量解析存储库管理的域类的实例。...可以通过让 Spring MVCid先将路径变量转换为域类的类型,最终通过调用findById(…)为域类型注册的存储库实例来访问实例来解析实例。...对可分页的超媒体支持 Spring HATEOAS 附带了一个表示模型类 ( PagedResources),它允许Page使用必要的Page元数据和链接来丰富实例的内容,让客户端轻松导航页面。
你可以设置spring.resources.staticLocations属性自定义静态资源的位置(配置一系列目录位置代替默认的值),如果你这样做,默认的欢迎页面将从自定义位置加载,所以只要这些路径中的任何地方有一个...如果找到任何一个,它将自动用作应用程序的欢迎页面。、 自定义Favicon Spring Boot favicon.ico在配置的静态内容位置和类路径的根目录(按此顺序)中查找a 。...路径匹配和内容协商 Spring MVC可以通过查看请求路径并将它匹配到应用程序中定义的映射(例如@GetMapping Controller方法上的注释),将传入的HTTP请求映射到处理程序。...为了完全替换默认的行为,你可以实现ErrorController,并注册一个该类型的bean定义,或简单地添加一个ErrorAttributes类型的bean以使用现存的机制,只是替换显示的内容。...Spring HATEOAS 如果正在开发基于超媒体的RESTful API,你可能需要Spring HATEOAS,而Spring Boot会为其提供自动配置,这在大多数应用中都运作良好。
28.1.12 Spring HATEOAS 如果您开发使用超媒体的RESTful API,Spring Boot为Spring HATEOAS提供了适用于大多数应用程序的自动配置。...配置为正确地将响应编组到所需的表示中。...您可以使用 @EnableHypermediaSupport 控制Spring HATEOAS的配置。请注意,这样做会禁用前面描述的 ObjectMapper 自定义。...WebFlux框架” Spring WebFlux是Spring Framework 5.0中引入的新的响应式Web框架。...要开始使用,请将 spring-boot-starter-webflux 模块添加到您的应用程序中。
这导致了与网络电子商务兴起之前相同的脆弱性。这表明我们的 JSON 输出需要一点帮助。介绍Spring HATEOAS,这是一个 Spring 项目,旨在帮助您编写超媒体驱动的输出。...Spring HATEOAS 的核心类型之一是Link. 它包括一个URI和一个rel(关系)。链接是赋予网络权力的东西。...HAL 是一种轻量级媒体类型,它不仅可以编码数据,还可以编码超媒体控件,提醒消费者注意他们可以导航的 API 的其他部分。...Spring HATEOAS 的所有模型的抽象基类是RepresentationModel. 但是为了简单起见,我建议使用EntityModel作为您的机制来轻松地将所有 POJO 包装为模型。...在这种情况下:将超媒体添加到您的服务中,而无需对事物进行硬编码。在这个阶段,您已经创建了一个实际生成超媒体驱动内容的 Spring MVC REST 控制器!
Spring MVC和Spring WebFlux都为构建这些类型的服务提供了坚实的基础。然而,即使为多域对象系统实现最简单的 REST Web 服务原则也可能非常乏味,并会产生大量样板代码。...它利用超媒体让客户端自动查找存储库公开的功能,并将这些资源集成到相关的基于超媒体的功能中。 3....3.1.将 Spring Data REST 添加到 Spring Boot 项目 最简单的入门方法是构建一个 Spring Boot 应用程序,因为 Spring Boot 有一个适用于 Spring...路径源自被管理的域类的非大写、复数、简单的类名。它还为 URI 模板下的存储库管理的每个项目公开一个项目资源/orders/{id}。...在收藏和物品资源的详细说明中阅读更多相关信息。 4.1.3.资源可发现性 HATEOAS 的一个核心原则是资源应该可以通过发布指向可用资源的链接来发现。
本文链接:https://blog.csdn.net/u014427391/article/details/102650252 REST风格简介 介绍HATEOAS之前先简单介绍一下REST,REST...Level2:资源使用正确的URI + HTTP方法,比如更新用户就用put方式,查询用get方式 Level3:使用HATEOAS(作为应用程序状态引擎的超媒体),在资源的表达中包含了链接信息,客户端可以在链接信息中发现可以执行的操作...HATEOAS代表“超媒体是应用程序状态的引擎” 从前言我们已经可以清楚知道,使用HATEOAS约束是REST风格中成熟度最高的,也是官方推荐的一种方式,没使用HATEOAS的项目,服务端和客户端是耦合的...在Spring的官网,已经有提供这个项目的相关文档,链接:https://spring.io/projects/spring-hateoas SpringBoot HATEOAS SpringBoot...中也有集成HATEOAS,本博客介绍一下如何使用 工具准备: JDK8.0 Maven 3.0+构建工具 Eclipse或者IntelliJ IDEA git&gitlab 在pom.xml加上hateoas
Roy Fielding的一句名言: "如果在部署的时候客户端把它们的控件都嵌入到了设计中, 那么它们就无法获得可进化性, 控件必须可以实时的被发现. 这就是超媒体能做到的." ...是可选的, 它表示了媒体的类型 为了支持HATEOAS, 这些形式就很有用了: { ......返回的是406,Not Acceptable。 这是因为ASP.NET Core的格式化器并不认识我们这个自定义的媒体类型。 在Startup里面添加这两句话以支持这个媒体类型: ?...这里如果媒体类型是我之前自定义的那个,就会返回三个链接:本身,获取Countries,创建Country。...之前我们已经创建了自定义的媒体类型,回忆一下Country的GET和POST两个Action,它们使用的是不同的ResourceModel: ? ?
书接上文⬆⬆⬆在 REST API 中构建链接到目前为止,您已经使用基本链接构建了一个可进化的 API。为了发展您的 API 并更好地为您的客户服务,您需要接受超媒体作为应用程序状态引擎的概念。...所有控制器方法都返回 Spring HATEOAS 的RepresentationModel子类之一以正确呈现超媒体(或围绕此类类型的包装器)。...通过利用超媒体和链接协议,客户端可以构建得更坚固,并且不太可能仅仅因为数据的变化而崩溃。Spring HATEOAS 可以轻松构建您需要为客户提供服务的超媒体。...本教程的每个部分都在单个 github 存储库中作为单独的子项目进行管理:nonrest — 没有自媒体的简单 Spring MVC 应用程序rest — Spring MVC + Spring HATEOAS...HATEOAS 的更多示例,请参阅以上就是今天关于Spring的一些讨论,对你有帮助吗?
Roy Fielding的一句名言: "如果在部署的时候客户端把它们的控件都嵌入到了设计中, 那么它们就无法获得可进化性, 控件必须可以实时的被发现. 这就是超媒体能做到的." ...是可选的, 它表示了媒体的类型 为了支持HATEOAS, 这些形式就很有用了: { ......修改media type: 返回的是406,Not Acceptable。 这是因为ASP.NET Core的格式化器并不认识我们这个自定义的媒体类型。...它只有一个GET方法,通过读取Header里的Accept的值,来返回相应的链接。 这里如果媒体类型是我之前自定义的那个,就会返回三个链接:本身,获取Countries,创建Country。...这里我们可以自定义一个应用于Action方法的自定义约束属性标签: 这个很简单,传进来需要匹配的header类型,和值(允许多个值);然后从request的headers里面找到匹配即可返回true。
独立使用 您还可以在 Spring 容器之外使用存储库基础设施——例如,在 CDI 环境中。您的类路径中仍然需要一些 Spring 库,但通常,您也可以通过编程方式设置存储库。...其中一些甚至提供与Spring HATEOAS 的集成。...它还检测类路径上的 Spring HATEOAS 并为其注册集成组件(如果存在)。...在 XML 中启用 Spring Data Web 支持 基本网络支持 上一节中显示的配置注册了一些基本组件: A使用DomainClassConverter类让 Spring MVC 从请求参数或路径变量解析存储库管理的域类的实例...可以通过让 Spring MVCid先将路径变量转换为域类的类型,最终通过调用findById(…)为域类型注册的存储库实例来访问实例来解析实例。
简单来讲,我们可以将对SpringBoot的行为可以进行干预的配置方式划分 为几类: 命令行参数(Command Line Args) 系统环境变量(Environment Variables) 位于文件系统中的配置文件...位于classpath中的配置文件。 固化到代码中的配置项。...some.path.you.defined}/any-logfile-name-1-like.log SpringBoot默认允许我们通过在配置文件或者命令行等方式使用 logging.file和logging.path来自定义日志文件的名称和存放路径...,最简单的做法就是把 spring-boot-starter-jdbc 加为应用的依赖。...spring-boot-starter-hateoas 通过spring-hateoas支持基于HATEOAS的RESTful Web服务。
第四个层次(Level 3)的 Web 服务使用 HATEOAS。在资源的表达中包含了链接信息。客户端可以根据链接来发现可以执行的动作。...它利用超媒体来允许客户端查找存储库暴露的功能,并将这些资源自动集成到相关的超媒体功能中。...{repository}默认是@Entity的name。2. {search}默认是**Repository中的自定义的方法。...类型为ResourceProcessor>的所有 bean 将自动由 Spring Data REST 导出器拾取,并在序列化类型为 T 的实体时触发。...也就是说,如果您有一个现有的 Spring MVC 应用程序,而您希望集成 Spring Data REST,那其实很简单。
领取专属 10元无门槛券
手把手带您无忧上云