SpringBoot HATEOAS 사용법 안내(입문)
HATEOAS 를 소개 하기 전에 REST 를 간단히 소개 하고,REST 는 Representational state transfer 의 줄 임 말로,표현 적 상태 전환 을 뜻 하 는 것 으로 번역 됐다.REST 는 구조 적 인 스타일 이다.
Richardson Maturity Model
Richardson 은 REST 의 성숙 도 모델 을 제 시 했 는데 우 리 는 Richardson Maturity 모델 이 라 고 부른다.이런 모델 은 REST 를 성숙 도 에 따라 4 개의 등급 으로 나눈다.
HATEOAS 대표"초매 체 는 앱 상태의 엔진"
앞에서 알 수 있 듯 이 HATEOAS 제약 을 사용 하 는 것 은 REST 스타일 에서 성숙 도가 가장 높 고 공식 적 으로 추천 하 는 방식 이다.HATEOAS 의 프로젝트 를 사용 하지 않 았 고 서버 와 클 라 이언 트 가 결합 되 었 다.클 라 이언 트 는 관련 문 서 를 통 해 서버 가 어떤 수정 을 했 는 지 알 수 있 을 뿐이다.HATEOAS 가 제약 하 는 REST 서 비 스 를 사용 하고 서버 가 인터페이스 정 보 를 수정 한 후에클 라 이언 트 는 서버 가 제공 하 는 자원 의 표현 을 통 해 실행 할 수 있 는 조작 을 스마트 하 게 발견 할 수 있 습 니 다.클 라 이언 트 는 수정 할 필요 가 없습니다.자원 정 보 는 동적 으로 변 하기 때 문 입 니 다.
Spring 홈 페이지 에 이 프로젝트 에 대한 문서 가 있 습 니 다.링크:https://spring.io/projects/spring-hateoas
SpringBoot HATEOAS
SpringBoot 에 도 통합 HATEOAS 가 있 습 니 다.본 블 로 그 는 어떻게 사용 하 는 지 소개 합 니 다.
도구 준비:
pom.xml 에 hateoas 설정 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
웹 간단 한 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>
실체 클래스 리 소스 지원 실현Model 클래스 는 hateoas 가 제공 하 는 Resource Suppor 를 실현 합 니 다.
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 링크 다운로드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.