코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍
개발

[Hateoas] Hateoas란?

개발

[Hateoas] Hateoas란?

2024. 1. 13. 11:40

Hateoas?

Hypermedia As The Engine Of Application State의 약자로, 기본적인 아이디어는

하이퍼미디어를 애플리케이션의 상태를 관리하기 위한 메커니즘으로 사용한다는 것입니다.

 

Hateoas란 REST API를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것을 의미합니다.

Hateoas는 API를 호출하고 응답하게 되면, 응답 시에 다음 로직에서 필요한 애플리케이션의 API 호출을 담아서 제공하는 규칙입니다.

 

하이퍼미디어?

음성이나 문자 등 형태가 다른 정보를 동시에 전달하고 표현하는 방법입니다.

 


Hateoas가 나온 이유

REST 구현 단계 ( 출처 : https://images.app.goo.gl/tp6yVbK2Lrs16dcB8)

Hateoas는 REST API를 잘 설계하기 위해 나온 개념입니다.

잘 설계된 REST API를 구현하기 위한 단계가 존재하는데 , 그 마지막 단계가

Hypermedia Controls (하이퍼미디어 컨트롤) - Hateoas라는 개념을 통해, 자원에 호출 가능한 API 정보를 자원의 상태를 반영하여 표현하는 것입니다.

 

REST API 구현 단계별 예시 (출처 : https://grapeup.com/blog/how-to-build-hypermedia-api-with-spring-hateoas/)

 


Hateoas 사용 예시

기존 회원가입 API

@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
    return ResponseEntity.ok(userService.create(user));
}

 

기존 회원가입 API 요청 시 응답

 

Hateoas가 적용된 회원가입 API

@PostMapping
public ResponseEntity<EntityModel<User>> createUser(@RequestBody User user) {
    User createUser = userService.create(user);

    EntityModel<User> entityModel = EntityModel.of(createUser);
    WebMvcLinkBuilder linTo = WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(this.getClass())
    		.findUser(createUser.getId()));
    entityModel.add(linTo.withRel("findUser"));

    return ResponseEntity.ok(entityModel);
}

// 단일 사용자 조회 샘플
@GetMapping("/{id}")
public ResponseEntity<User> findUser(@PathVariable Long id) {
    return ResponseEntity.ok(userService.findUser(id));
}

 

Hateoas가 적용된 회원가입 API 요청 시 응답

회원가입 이후 발생할 수 있는 상황에 대한 URI를 제공한다.

 

build.gradle: Hateoas 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-hateoas'

 


장점

  • 서버단에서는 URI 수정이 발생하더라도 클라이언트단은 수정이 이루어지지 않는다.
  • 클라이언트단에서 URI를 하드코딩 하지 않아도 된다. 

'개발' 카테고리의 다른 글

[Swagger] Swagger란?  (0) 2024.01.13
  • Hateoas?
  • Hateoas가 나온 이유
  • Hateoas 사용 예시
  • 장점
'개발' 카테고리의 다른 글
  • [Swagger] Swagger란?
코딍코딍
코딍코딍
ㅎ2

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.