[스프링] 스프링 HATEOAS의 개념

스프링 HATEOAS는 Hypermedia as the Engine of Application State의 약자로, REST API에서 하이퍼미디어를 이용하여 애플리케이션의 상태 전이를 제공하는 기술입니다. 이것은 클라이언트가 상태 전이를 위한 정보를 서버로부터 동적으로 받아와야 하는 HATEOAS의 기본 개념을 기반으로 합니다.

주요 특징

사용 예제

import org.springframework.hateoas.Link;
import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;

@Controller
@RequestMapping("/orders")
public class OrderController {

    @GetMapping("/{id}")
    public ResponseEntity<Order> getOrderById(@PathVariable Long id) {
        Order order = orderService.getOrderById(id);
        
        // 하이퍼미디어 링크 추가
        Link selfLink = WebMvcLinkBuilder.linkTo(methodOn(OrderController.class).getOrderById(id)).withSelfRel();
        order.add(selfLink);

        // 추가적인 동작에 대한 링크 제공
        if (order.isCancelable()) {
            Link cancelLink = WebMvcLinkBuilder.linkTo(methodOn(OrderController.class).cancelOrder(id)).withRel("cancel");
            order.add(cancelLink);
        }

        return ResponseEntity.ok(order);
    }

    @PostMapping("/{id}/cancel")
    public ResponseEntity cancelOrder(@PathVariable Long id) {
        orderService.cancelOrder(id);
        return ResponseEntity.noContent().build();
    }
}

위의 예제는 주문 서비스의 RESTful API 컨트롤러를 보여줍니다. getOrderById 메서드에서는 주문 정보를 조회하면서 해당 주문에 대한 cancel 링크를 제공합니다. cancelOrder 메서드는 주문을 취소하는 동작을 수행하고, 연관된 링크 정보를 통해 클라이언트에게 제공합니다.

스프링 HATEOAS는 RESTful API의 하이퍼미디어 링크를 통해 클라이언트에게 동적으로 애플리케이션 상태 전이를 제공하므로, 클라이언트와 서버 간의 효율적이고 유연한 상호작용을 가능하게 합니다.

참고 자료