真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在SpringBoot中使用HATEOAS方法-創(chuàng)新互聯(lián)

怎么在SpringBoot中使用HATEOAS方法?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

成都創(chuàng)新互聯(lián)公司基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺(tái)為眾多戶提供服務(wù)器托管 四川大帶寬租用 成都機(jī)柜租用 成都服務(wù)器租用。

REST風(fēng)格簡(jiǎn)介

介紹HATEOAS之前先簡(jiǎn)單介紹一下REST,REST 是 Representational state transfer 的縮寫,翻譯過(guò)來(lái)的意思是表達(dá)性狀態(tài)轉(zhuǎn)換。REST是一種架構(gòu)的風(fēng)格

Richardson Maturity Model

Richardson 提出了REST一種 成熟度模型,我們稱之為Richardson Maturity Model,這種模式將REST按照成熟度劃分為4個(gè)等級(jí)

  • Level0:使用HTTP作為WEB服務(wù)的傳輸方式,以REST樣式公開SOAP Web服務(wù)

  • Level1:使用適當(dāng)?shù)腢RI(使用名詞)公開資源,這種方式提出了資源的概念

  • Level2:資源使用正確的URI + HTTP方法,比如更新用戶就用put方式,查詢用get方式

  • Level3:使用HATEOAS(作為應(yīng)用程序狀態(tài)引擎的超媒體),在資源的表達(dá)中包含了鏈接信息,客戶端可以在鏈接信息中發(fā)現(xiàn)可以執(zhí)行的操作

HATEOAS是什么?

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

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

在Spring的官網(wǎng),已經(jīng)有提供這個(gè)項(xiàng)目的相關(guān)文檔,鏈接:https://spring.io/projects/spring-hateoas

SpringBoot HATEOAS

SpringBoot中也有集成HATEOAS,本博客介紹一下如何使用

工具準(zhǔn)備:

  • JDK8.0

  • Maven 3.0+構(gòu)建工具

  • Eclipse或者IntelliJ IDEA

  • git&gitlab

Maven相關(guān)配置

在pom.xml加上hateoas配置


  org.springframework.boot
  spring-boot-starter-hateoas

因?yàn)槭且獙憘€(gè)web簡(jiǎn)單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
        
      
    

實(shí)體類實(shí)現(xiàn)ResourceSupport

Model類實(shí)現(xiàn)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;
  }
}
....

接口調(diào)用,基于HATEOAS模式

@GetMapping("/findBySysUserId/{userId}")
  public SysUserInfo findBySysUserId(@PathVariable("userId") long userId) {
    if (LOG.isInfoEnabled()) {
      LOG.info("請(qǐng)求參數(shù)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方法

看完上述內(nèi)容,你們掌握怎么在SpringBoot中使用HATEOAS方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前文章:怎么在SpringBoot中使用HATEOAS方法-創(chuàng)新互聯(lián)
當(dāng)前URL:http://weahome.cn/article/geojo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部