SpringBoot HATEOAS使用方法
创始人
2024-12-23 10:01:58
0次

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();  }

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...