,,SpringBoot HATEOAS用法简介(入门)

,,SpringBoot HATEOAS用法简介(入门)

这篇文章主要介绍了跳羚队用法简介(入门),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

休息风格简介

介绍哈特奥斯之前先简单介绍一下休息,休息是代表性状态转移的缩写,翻译过来的意思是表达性状态转换休息。是一种架构的风格

Richardson Maturity Model

理查森提出了休息一种成熟度模型,我们称之为理查森成熟度模型,这种模式将休息按照成熟度划分为四个等级

级别0:使用超文本传送协议作为网服务的传输方式,以休息样式公开肥皂网服务

级别1:使用适当的URI(使用名词)公开资源,这种方式提出了资源的概念

级别2:资源使用正确的URI HTTP方法,比如更新用户就用放方式,查询用得到方式

级别3:使用哈特奥斯(作为应用程序状态引擎的超媒体),在资源的表达中包含了链接信息,客户端可以在链接信息中发现可以执行的操作

HATEOAS是什么?

哈特奥斯代表"超媒体是应用程序状态的引擎"

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

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

SpringBoot HATEOAS

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

工具准备:

JDK8.0

Maven 3.0构建工具

黯然失色或者智能理念

gitgitlab

Maven相关配置

在pom.xml加上哈特奥斯配置

属国

groupIdorg.springframework.boot/groupId

artifactId spring-boot-starter-hat OAS/artifactId

/依赖关系

因为是要写个网简单凝乳例子,其它需要的也加上

属国

groupIdorg.springframework.boot/groupId

artifact id spring-boot-starter-data-JPA/artifact id

/依赖关系

属国

groupIdorg.springframework.boot/groupId

artifactId spring-boot-starter-hat OAS/artifactId

/依赖关系

属国

groupIdorg.springframework.boot/groupId

artifact id spring-boot-starter-web/artifact id

/依赖关系

属国

groupIdcom.alibaba/groupId

artifactIddruid/artifactId

版本1 .0 .25/版本

/依赖关系

属国

groupIdmysql/groupId

artifactId MySQL-连接器-java/artifactId

版本5 .1 .40/版本

/依赖关系

属国

groupIdorg.springframework.boot/groupId

artifactId spring-boot-starter-test/artifactId

范围测试/范围

不包括的项目:如接受服务项目是由投保以前已患有的疾病或伤害引致的

排除

groupIdorg.junit.vintage/groupId

artifactId JUnit-vintage-engine/artifactId

/排除

/排除

/依赖关系

实体类实现ResourceSupport

模型类实现哈特奥斯提供的资源供应商

导入com。更快的XML。杰克逊。注释。JSON创建者;

导入com。更快的XML。杰克逊。注释。JSON属性;

导入org。spring框架。讨厌OAS。资源支持;

导入javax。坚持。*;

导入Java。io。可序列化;

@实体

@Table(name='sys_user ')

公共类SysUserInfo扩展资源支持实现可序列化{

@Id

@GeneratedValue

私有长使用者辩证码

@Column(unique=true,length=20,nullable=false)

私有字符串用户名;

@Column(length=2,nullable=true)

私弦性;

@Column(length=10,nullable=true)

私有字符串密码;

公共SysUserInfo(){

}

@JsonCreator

公共SysUserInfo(@ JSON属性(' userId ')长userId,@JsonProperty('用户名')字符串用户名,

@JsonProperty('sex ')字符串性别,@JsonProperty('password ')字符串密码){

this.userId=用户标识

this .用户名=用户名;

性=性

this.password=密码;

}

}

.

接口调用,基于哈特奥斯模式

@ get mapping('/findbysuserid/{ userId } ')

public SysUserInfo findbysuserid(@ path变量(' userId ')long userId){

if (LOG.isInfoEnabled()) {

LOG.info('请求参数userId : {} ',userId);

}

OptionalSysUserInfo sysUserInfo=可选。可空的(sysuser存储库。findbyuserid(userId));

如果(!sysUserInfo.isPresent()) {

引发新的NotFoundException(“查询不到用户信息!userId:' userId);

}

//resources ysuserinfo resource=新资源ysuserinfo(sysuserinfo。get());

控制器链接生成器link builder=link to(方法on(this。getclass()).findbysuserid(userId));

sysUserInfo.get().添加(链接生成器。with rel(' findbysuserid ');

返回sysuserinfo。get();

}

实例代码:github链接下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: