千家信息网

SpringBoot HATEOAS使用方法

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本篇文章为大家展示了SpringBoot HATEOAS使用方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。REST风格简介介绍HATEOAS之前先简单介绍
千家信息网最后更新 2025年11月10日SpringBoot HATEOAS使用方法

本篇文章为大家展示了SpringBoot HATEOAS使用方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

REST风格简介

介绍HATEOAS之前先简单介绍一下REST,REST 是 Representational state transfer 的缩写,翻译过来的意思是表达性状态转换。REST是一种架构的风格

Richardson Maturity Model

Richardson 提出了REST一种 成熟度模型,我们称之为Richardson Maturity Model,这种模式将REST按照成熟度划分为4个等级

Level0:使用HTTP作为WEB服务的传输方式,以REST样式公开SOAP Web服务 Level1:使用适当的URI(使用名词)公开资源,这种方式提出了资源的概念 Level2:资源使用正确的URI + HTTP方法,比如更新用户就用put方式,查询用get方式 Level3:使用HATEOAS(作为应用程序状态引擎的超媒体),在资源的表达中包含了链接信息,客户端可以在链接信息中发现可以执行的操作

HATEOAS是什么?

HATEOAS代表"超媒体是应用程序状态的引擎"

从前言我们已经可以清楚知道,使用HATEOAS约束是REST风格中成熟度最高的,也是官方推荐的一种方式,没使用HATEOAS的项目,服务端和客户端是耦合的,客户端只能通过相关文档来知道服务端做了什么修改,使用HATEOAS约束的REST服务,服务端修改接口信息后,客户端可以通过服务器提供的资源的表达来智能地发现可以执行的操作,客户端不需要做啥修改,因为资源信息是会动态改变的

在Spring的官网,已经有提供这个项目的相关文档,链接:https://spring.io/projects/spring-hateoas

SpringBoot HATEOAS

SpringBoot中也有集成HATEOAS,本博客介绍一下如何使用

工具准备:

JDK8.0 Maven 3.0+构建工具 Eclipse或者IntelliJ IDEA git&gitlab

Maven相关配置

在pom.xml加上hateoas配置

org.springframework.boot spring-boot-starter-hateoas

因为是要写个web简单curd例子,其它需要的也加上

org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-hateoas org.springframework.boot spring-boot-starter-web com.alibaba druid 1.0.25 mysql mysql-connector-java 5.1.40 org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine

实体类实现ResourceSupport

Model类实现hateoas提供的ResourceSuppor

import com.fasterxml.jackson.annotation.JsonCreator;import com.fasterxml.jackson.annotation.JsonProperty;import org.springframework.hateoas.ResourceSupport;import javax.persistence.*;import java.io.Serializable;@Entity@Table(name="sys_user")public class SysUserInfo extends ResourceSupport implements Serializable{ @Id @GeneratedValue private Long userId; @Column(unique=true,length=20,nullable=false) private String username; @Column(length=2,nullable=true) private String sex; @Column(length=10,nullable=true) private String password; public SysUserInfo(){ } @JsonCreator public SysUserInfo(@JsonProperty("userId")Long userId,@JsonProperty("username")String username, @JsonProperty("sex")String sex,@JsonProperty("password")String password){ this.userId = userId; this.username = username; this.sex = sex; this.password = password; }}....

接口调用,基于HATEOAS模式

@GetMapping("/findBySysUserId/{userId}") public SysUserInfo findBySysUserId(@PathVariable("userId") long userId) { if (LOG.isInfoEnabled()) { LOG.info("请求参数userId : {}" , userId); } Optional sysUserInfo = Optional.ofNullable(sysUserRepository.findByUserId(userId)); if (!sysUserInfo.isPresent()) { throw new NotFoundException("查询不到用户信息! userId:"+userId); } //Resource resource = new Resource(sysUserInfo.get()); ControllerLinkBuilder linkBuilder = linkTo(methodOn(this.getClass()).findBySysUserId(userId)); sysUserInfo.get().add(linkBuilder.withRel("findBySysUserId")); return sysUserInfo.get(); }

上述内容就是SpringBoot HATEOAS使用方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

服务 资源 信息 客户 客户端 方式 方法 成熟 成熟度 状态 链接 风格 使用方法 内容 媒体 工具 应用程序 引擎 技能 接口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 校园网络安全及信息化建设 网络安全法活动简报 软件开发前沿技术报告 软件开发进度如何把控 云安全和传统网络安全的差别 联想服务器ibmc管理ip 中兴网络安全主要的参考规范 徐汇区银联数据库服务销售 池州公安网络安全 feehi里的数据库表如何提取 北京微软网络技术有限公司马奕帆 网络安全事件 分析报告 点歌软件开发 软件开发费属于什么类别 衡水科技产业互联网是什么 腾讯王者荣耀服务器是国外的 我局成立了网络安全领导机构 法院网络安全通知 杭州服务器托管租用吗 给db2数据库增加一个字段 网络安全保卫大队待遇怎么样 我的世界国度服务器开服 佰万网络技术有什么游戏 软件开发实训生是真的吗 数据库索引的运用 神经网络技术有限公司 桂林网络安全特训营 数据库四大特性范式 数据库开发有必要吗 网络安全法二十一条案例
0