반응형

RESTFUL 어노테이션

스프링 3.0 에선 @RESOPONSEBODY , @CONTROLLER 를 각각의 메소드에 써서 리턴타입으로 자원만 줬으나

스프링 4.0 에선 @RESTCONTROLLER 를 클래스에 한번만 기술하면 클래스에 있는 모든 메소드들이 자원전달 가능

주로 ajax 로 url 호출하여 데이터만 받을때 많이 쓴다

컨트롤러

@RestController //리소스 (데이타) 자체를 반환하는데 사용하는 어노테이션이다.(json,xml,문자열) @RequestMapping("/demo") public class DemoController { // <-- 이 클래스에 @RestController 붙임으로써 각 메소드별로 @ResponseBody 를 붙인것과 같은효과 @RequestMapping("hi") public String hi() { // 클래스에 @restController 이 붙으면 리턴값이 뷰리졸버에서 // 뷰의 이름을 찾는거였는데 문자열 그대로 리턴을 하게됨 return "hi!!!!! spring!!!"; } }

pom.xml

<properties> <java-version>1.8</java-version> <org.springframework-version>4.1.7.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties>

리턴타입이 문자열일 경우 그냥 문자열이 반환 되서 뿌려주나

리턴 타입이 객체 (VO , Object , map , list 등) 리턴타입이 객체로 될경우 http 에서는 각 객체들이 어떤타입이거 무엇인지 인식을 못하기때 문에

html /http 에서도 인식할수 있는 json 으로 형 변환하여 리턴 해주어야 한다

pom. xml 에 json 라이브러리 사용방법.

pom.xml 디펜던시 추가

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.3</version> </dependency>

컨트롤러

@RestController //리소스(데이타) 자체를 반환하는데 사용하는 어노테이션이다. (JSON, XML, 문자열) @RequestMapping("/demo") public class DemoController { @RequestMapping("/studentInfo") public StudentVO studentInfo(){ //StudentVO 객체를 만들어서 RETURN StudentVO svo = new StudentVO(); svo.setHakbun(1); svo.setName("김말똥"); svo.setGrade(2); return svo; } }

이렇게 Pom.xml 에 jackson 라이브러리를 추가하면 반환되는 객체(vo 를 json으로 변환하여 전달합니다)

반대로 json 객체가 들어오면 그 타입에 맞는 객체로 변환합니다.

이것들이 가능한 이유는 pom.xml에 jackson 라이브러리(json라이브러리) 가 적용되야 가능하다

response header 에는 (공급하는자 헤더에는)



이렇게 타입이 들어가있따

json 라이브러리로 보낼경우엔 저 컨텐트 타입이 application/json 으로 되있다.

content-Type : 문자열 (String) = text/html

collection(map,list ,vo,JSON등) = application / json

rest 방식은 이와같이 별도의 view 를 만들지 않고 데이터만 보냅니다.


반응형

+ Recent posts