Spring HATEOAS (2)
이전의 글에 이어 간단한 프로그램을 작성해 보았다.
샘프을 보면 Return Class는 ResourceSupport 름 상속받는다.
내용을 보면 별 거 없다.
Json String으로 만들어질 class의 super class이기 때문에 몇 부분에 대해서
@jsonIgnore 처리가 되어있다.
JSON과 XML로 만들어질 links 프로퍼티가 참조하는 getLinks 메소드를 가지고 있다.
이것을 보면 해당 객체가 응답으로 만들어졌을 때
ResourceSupport로 부터 참조되어 생성되는 key는 “links” 밖에 없다는 말이다.
컨트롤러를 보게 되면 더욱 심플하다.
ResourceSupport 를 상속한 Greeting 클래스를 만들고
name 변수를 정의했다.
그 후 단순히 컨트롤러에서는 이 리소스로 부터 연결된 링크들을
리턴객체.add(링크 할 컨트롤러 메소드).withRel(링크 이름);
이런식으로 추가하면 된다.
나는 hello메소드(/hello)에 bye와 punch에 대한 링크를 추가하였다.
/hello?name=ELDI로 접속하자.
보는 바와 같이 추가한 bye, punch에 대한 링크가 추가되어있다.
링크 중 punch 주소로 들어가보자.
punch 메소드에는 run이라는 링크이름으로 bye메소드를 링크해두었다.
참고로 응답 컨텐츠 타입은 application/hal+json이다.
RestController에 별다른 적용은 하지 않았다.
Content-Type:
application/hal+json;charset=UTF-8
Spring HATEOAS에서 자동으로 응답객체에 대한 구분을 하여
content-type 처리를 해주는 것으로 생각된다.
흠..
구글 검색엔진 봇에서 스크립트레이어의 hal+json통신에 대해서도 크롤링을 해줄까?