Spring HATEOAS

  • HATEOAS를 지원하는 스프링 기능

  • spring-boot-starter-hateoas 의존성을 추가한다.

    • ObjectMapper와 LinkDiscovers를 제공한다.

HATEOAS

  • Hypermedia As The Engine Of Application State

  • 서버

    • 요청된 정보를 제공할 때 리소스와 연관된 링크 정보까지 같이 제공한다

  • 클라이언트

    • 연관된 링크 정보를 바탕으로 리소스에 접근한다.

연관된 링크 정보

  • Relation

  • Hypertext Reference

book 조회 링크가 있다면 relation에 book이 있고 그 HREF는 /book이 된다. book을 요청하면 book이라는 relation의 HREF를 요청한다.

ObjectMapper

  • spring.jackson.*

  • json으로 변환할 때 사용한다.

  • starter 의존성에 이미 들어 있기 때문에 hateoas가 없어도 이미 등록되어 있어 사용하면 된다.

예제

@RestController
public class SampleController {

    @GetMapping("/hateoas")
    public EntityModel<Hello> hello() {
        Hello hello = new Hello();
        hello.setPrefix("Hey, ");
        hello.setName("keesun");

        // 링크 추가
        EntityModel<Hello> helloResource = EntityModel.of(hello);
        helloResource.add(linkTo(methodOn(SampleController.class).hello()).withSelfRel());

        return helloResource;
    }
}
{
  "prefix": "Hey, ",
  "name": "keesun",
  "_links": {
    "self": {
      "href": "http://localhost/hateoas"
    }
  }
}
  • 결과에 링크 정보가 추가되는 걸 볼 수 있다.

Last updated