SpringBootHATEOAS使用方法

本篇文章为大家展示了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使用方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


文章名称:SpringBootHATEOAS使用方法
网站网址:http://pwwzsj.com/article/jdgdhj.html