中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在SpringBoot中使用HATEOAS方法

發布時間:2021-03-23 16:00:42 來源:億速云 閱讀:200 作者:Leah 欄目:編程語言

怎么在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配置

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

怎么在SpringBoot中使用HATEOAS方法

看完上述內容,你們掌握怎么在SpringBoot中使用HATEOAS方法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锡林浩特市| 绥棱县| 汉寿县| 拜泉县| 韶关市| 鹿邑县| 舒兰市| 张家川| 红河县| 津市市| 新民市| 大邑县| 土默特右旗| 渭源县| 绥棱县| 蓬溪县| 紫云| 辽源市| 西华县| 赫章县| 嘉黎县| 九台市| 南通市| 衡阳县| 谷城县| 青岛市| 淳安县| 沂南县| 政和县| 临猗县| 东光县| 玉屏| 榆中县| 木里| 萨嘎县| 济宁市| 灯塔市| 习水县| 石楼县| 郴州市| 堆龙德庆县|