이전의 글에 이어 간단한 프로그램을 작성해 보았다.

샘프을 보면 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통신에 대해서도 크롤링을 해줄까?

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store