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配置

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>

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

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-hateoas</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.25</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency>

实体类实现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@GeneratedValueprivate 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(){}@JsonCreatorpublic 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> sysUserInfo = Optional.ofNullable(sysUserRepository.findByUserId(userId));if (!sysUserInfo.isPresent()) {throw new NotFoundException("查询不到用户信息! userId:"+userId);}//Resource<SysUserInfo> resource = new Resource<SysUserInfo>(sysUserInfo.get());ControllerLinkBuilder linkBuilder = linkTo(methodOn(this.getClass()).findBySysUserId(userId));sysUserInfo.get().add(linkBuilder.withRel("findBySysUserId"));return sysUserInfo.get();}


实例代码:github链接下载

SpringBoot HATEOAS用法简介(入门)相关推荐

  1. SpringBoot HATEOAS用法简介

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

  2. SpringBoot系列之HATEOAS用法简介

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

  3. MSSQL Sql加密函数 hashbytes 用法简介

    原文:MSSQL Sql加密函数 hashbytes 用法简介 转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashb ...

  4. SpringBoot系列: RestTemplate 快速入门

    ==================================== 相关的文章 ==================================== SpringBoot系列: 与Sprin ...

  5. SpringBoot常用配置简介

    SpringBoot常用配置简介 1. SpringBoot中几个常用的配置的简单介绍 一个简单的Spring.factories # Bootstrap components org.springf ...

  6. Postman用法简介-Http请求模拟工具

    Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具 ...

  7. SpringBoot + Spring Security 简单入门

    这篇文章主要介绍了SpringBoot + Spring Security 简单入门 Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考 ...

  8. InputStreamReader 和 OutputStreamWriter类用法简介,及演示。

    InputStreamReader 和 OutputStreamWriter类用法简介. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通 ...

  9. php中__FILE__常量用法简介

    php中__FILE__常量用法简介 http://blog.csdn.net/xbei07/article/details/5616020#comments出处 1.php中的__FILE__常量返 ...

最新文章

  1. Spring Cloud 微服务实战笔记
  2. 公司规定所有接口都用 POST请求?
  3. Redis的数据结构
  4. hbase 默认目录_HBase 配置示例
  5. MAX2606调频发射芯片
  6. Elasticsearch配置使用
  7. php 怎么获取meta标签,php – 通过jQuery获取META描述
  8. 华硕 RT-AC54U路由器固件功能说明
  9. crossdomain.xml配置不当的利用和解决办法
  10. 确定不进来看看?分享一个插件,让敲代码不再枯燥,activate-power-mode
  11. day04.2-迭代器
  12. idea添加scala环境_Scala(一)——scala+Idea环境配置
  13. 智慧环卫管理系统解决方案
  14. f分布表完整图a=0.01_桥梁横向分布系数计算方法及案例详解
  15. thinkpad X230 黑屏折腾
  16. 网页上使用按键代替鼠标点击按钮
  17. SNMP中的MIB是什么?
  18. 二、【服务器】服务器入门·服务器简介
  19. linux装回win10系统无法开机,ghost win10系统安装后无法启动怎么办
  20. android分享图片到qq,Android实现截图分享qq,微信

热门文章

  1. 一个计算器的C语言实现
  2. RecyclerView详解一,使用及缓存机制
  3. 跨境电商淘宝详情解决方案
  4. Unsupported format, or corrupt file: Expected BOF record; found b‘2021\xc4\xea\xca\xfd‘
  5. 对三类软件(游戏,系统,工具)的分析与心得(软件工程第一次作业)
  6. 让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具
  7. Android上传图片到七牛云
  8. 【Python】用Python制作一个名片管理系统
  9. bootstrap 黑边框表格样式_bootstrap4 使用及常用样式详细整理
  10. latex表格内容上下居中_LaTeX表格紧跟文字 (不影响下方文本对齐)