最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot HATEOAS用法簡介(入門)

 更新時間:2019年10月28日 10:15:13   作者:smileNicky  
這篇文章主要介紹了SpringBoot HATEOAS用法簡介(入門),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

REST風格簡介

介紹HATEOAS之前先簡單介紹一下REST,REST 是 Representational state transfer 的縮寫,翻譯過來的意思是表達性狀態(tài)轉換。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(作為應用程序狀態(tài)引擎的超媒體),在資源的表達中包含了鏈接信息,客戶端可以在鏈接信息中發(fā)現可以執(zhí)行的操作

HATEOAS是什么?

HATEOAS代表“超媒體是應用程序狀態(tài)的引擎”

從前言我們已經可以清楚知道,使用HATEOAS約束是REST風格中成熟度最高的,也是官方推薦的一種方式,沒使用HATEOAS的項目,服務端和客戶端是耦合的,客戶端只能通過相關文檔來知道服務端做了什么修改,使用HATEOAS約束的REST服務,服務端修改接口信息后,客戶端可以通過服務器提供的資源的表達來智能地發(fā)現可以執(zhí)行的操作,客戶端不需要做啥修改,因為資源信息是會動態(tài)改變的

在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
 @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> 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 Admin的簡單使用的方法步驟

    SpringBoot Admin的簡單使用的方法步驟

    本文主要介紹了SpringBoot Admin的簡單使用的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java獲取用戶訪問IP及地理位置的方法詳解

    Java獲取用戶訪問IP及地理位置的方法詳解

    這篇文章主要介紹了Java獲取用戶訪問IP及地理位置的方法,結合實例形式詳細分析了Java基于百度地圖開放平臺獲取用戶訪問IP及地理位置相關操作技巧,需要的朋友可以參考下
    2020-04-04
  • SpringBoot淺析安全管理之高級配置

    SpringBoot淺析安全管理之高級配置

    安全管理是軟件系統必不可少的的功能。根據經典的“墨菲定律”——凡是可能,總會發(fā)生。如果系統存在安全隱患,最終必然會出現問題,這篇文章主要介紹了SpringBoot安全管理之高級配置
    2022-08-08
  • 一文帶你了解Java中IO流與Guava的使用

    一文帶你了解Java中IO流與Guava的使用

    Java為我們提供了非常多的操作IO的接口與類,幫助開發(fā)者實現不同源間的數據傳輸,比如硬盤文件、網絡傳輸、應用調用間的數據交互與傳遞。今天我們來簡單了解下Java中的流?以及在Guava工具包中,針對IO操作做了什么樣的封裝與設計
    2022-11-11
  • Java利用策略模式優(yōu)化過多if else代碼

    Java利用策略模式優(yōu)化過多if else代碼

    這篇文章主要介紹了Java利用策略模式優(yōu)化過多if else代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Java 并發(fā)編程中的鎖機制示例詳解

    Java 并發(fā)編程中的鎖機制示例詳解

    本文探討了Java并發(fā)編程中的鎖機制,包括鎖的基本概念、Java中的鎖類型如synchronized、ReentrantLock、ReadWriteLock、鎖的優(yōu)化策略以及如何避免死鎖,文章強調了合理選擇和優(yōu)化鎖使用對于提升程序并發(fā)性能的重要性,并提供了實際應用中的最佳實踐,感興趣的朋友一起看看吧
    2025-01-01
  • Java判斷map是否為null或者空的方法小結

    Java判斷map是否為null或者空的方法小結

    這篇文章主要介紹了Java 如何判斷map為null或者空,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • Java使用Runnable接口創(chuàng)建線程的示例代碼

    Java使用Runnable接口創(chuàng)建線程的示例代碼

    在Java中,多線程編程是實現并發(fā)操作的重要手段之一,通過多線程,程序可以同時執(zhí)行多個任務,從而提高應用程序的效率和響應速度,Java提供了多種創(chuàng)建線程的方式,其中實現Runnable接口是最常見且推薦的方式之一,本文將詳細介紹如何使用Runnable接口創(chuàng)建線程
    2025-02-02
  • hbase訪問方式之java api

    hbase訪問方式之java api

    這篇文章主要介紹了hbase訪問方式之java api,需要的朋友可以參考下
    2017-09-09
  • 詳解SpringCloud Config配置中心

    詳解SpringCloud Config配置中心

    這篇文章主要介紹了詳解SpringCloud Config配置中心,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論

南江县| 沅江市| 平罗县| 偃师市| 敦煌市| 闽清县| 彭山县| 绿春县| 裕民县| 繁峙县| 鄯善县| 赤壁市| 文山县| 青浦区| 泗洪县| 安义县| 武乡县| 伊宁市| 尤溪县| 文安县| 印江| 平罗县| 新平| 漠河县| 肇州县| 达日县| 广宗县| 新密市| 页游| 浠水县| 长泰县| 宜黄县| 宁明县| 凌云县| 柳林县| 邻水| 新泰市| 利川市| 大冶市| 万山特区| 新巴尔虎右旗|