Hateoas?
Hypermedia As The Engine Of Application State의 약자로, 기본적인 아이디어는
하이퍼미디어를 애플리케이션의 상태를 관리하기 위한 메커니즘으로 사용한다는 것입니다.
Hateoas란 REST API를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것을 의미합니다.
Hateoas는 API를 호출하고 응답하게 되면, 응답 시에 다음 로직에서 필요한 애플리케이션의 API 호출을 담아서 제공하는 규칙입니다.
하이퍼미디어?
음성이나 문자 등 형태가 다른 정보를 동시에 전달하고 표현하는 방법입니다.
Hateoas가 나온 이유
Hateoas는 REST API를 잘 설계하기 위해 나온 개념입니다.
잘 설계된 REST API를 구현하기 위한 단계가 존재하는데 , 그 마지막 단계가
Hypermedia Controls (하이퍼미디어 컨트롤) - Hateoas라는 개념을 통해, 자원에 호출 가능한 API 정보를 자원의 상태를 반영하여 표현하는 것입니다.
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 요청 시 응답
build.gradle: Hateoas 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
장점
- 서버단에서는 URI 수정이 발생하더라도 클라이언트단은 수정이 이루어지지 않는다.
- 클라이언트단에서 URI를 하드코딩 하지 않아도 된다.
'개발' 카테고리의 다른 글
[Swagger] Swagger란? (0) | 2024.01.13 |
---|