HATEOAS를 구현하기에 편리한 기능들을 제공하는 라이브러리입니다. REST API를 만들 때 사용하는 기능입니다. SpringBoot에서는 단순 의존성 추가 하나만으로 모든 기능을 사용할 수 있습니다. 코딩하는 과정이 늘어 불편하지만 진정한 REST API를 제작시 사용하면 됩니다.
@GetMapping("/hello") public Hello hello(){ Hello hello = new Hello(); hello.setPrefix("Hey, "); hello.setName("junjang");
return hello; } }
/hello 객체에 값을 set하고 객체를 return합니다. 그리고 테스트를 실행하면 아래와 같은 오류가 출력됩니다.
200에러와 함께 JsonPath에러가 뜰 것입니다. 이는 값은 보내지지만 Jsonpath로 가는 작업이 없기 때문입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
@RestController publicclassSampleController{
@GetMapping("/hello") public Resource<Hello> hello(){ Hello hello = new Hello(); hello.setPrefix("Hey, "); hello.setName("junjang");
//SampleController 클래스에 존재하는 hello라는 메서드에 대한 링크를 만들어서 self라는 릴레이션을 만들어서 추가합니다. Resource<Hello> helloResource = new Resource<>(hello); helloResource.add(linkTo(methodOn(SampleController.class).hello()).withSelfRel());
return helloResource; } }
hateoas를 import한 Resource 객체를 생성하여 Hello 클래스를 가지고 Controller의 hello 메소드의 링크를 객체에 추가합니다. 여기서 self의 역할은 자기 자신의 주소를 가르키게 됩니다. 그리고 주소를 넣은 객체를 return합니다.
주소가 들어간 resource를 return했더니 JSON에 주소까지 포함되어 출력되는 것을 확인할 수 있습니다.