千家信息网

SpringBoot HATEOAS使用方法

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇文章为大家展示了SpringBoot HATEOAS使用方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。REST风格简介介绍HATEOAS之前先简单介绍
千家信息网最后更新 2025年01月18日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安全错误 数据库的锁怎样保障安全 财纳康姆斯网络技术怎么样 网站网络安全存在的问题 微梦创科网络技术有限公司张瑜 mysql的数据库关系图 甘肃听图网络技术有限公司 杭州引杭互联网科技有限公司 二维码软件开发电话 重庆广告设计软件开发 轻量云服务器+管理文件 谷歌云服务器注册 阿里服务器mysql 价格 网络技术员实习最后月报 网站代码上传到服务器 广东前端软件开发收费报价表 网络安全及信息化专业委员会 山西维护网络安全 到梦空间显示服务器数据异常 数据库查询实时连接数 领信宝服务器错误什么情况 网络安全教案反思小学 csgo本身就是服务器的主播 知网外文数据库怎么打开 c ado读取数据库 鬼魂本地服务器id 体现网络安全的画 数据库查询评价年龄 华南农业大学种质资源数据库 互联网智能科技的意义启发 相城区运营网络技术要多少钱 数据库,同一字段的值分开
0