ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RESTController의 반환 타입
    Spring_FrameWork 2018. 11. 28. 12:45

    @RestController는 JSP와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포멧의 데이터를 전송핤 있습니다. 주로 많이 사용하는 형태는 일반 문자열이나 JSON,XML 등을 사용합니다.

    1.단순 문자열 반환

    기존의 @Controller 는 문자열을 반환하는 경우에는 JSP 파일의 이름으로 처리하지만,

    @RESTController의 경우에는 순수한 데이터가 된다.

    @GetMapping에 사용된 produces 속성은 해당 메서드가 생산하는 MIME타입을 의미합니다.  예제와 같이 문자열로 직접 지정할 수도 있고 , 메서드 내의 MediaType이라는 클래스를 이용할수 도 있다.

    server-> module 에서 주소 경로를 ‘/’경로로 실행되도록 하고 브라우저를 통해서 ‘/sample/getText’를 호출 하면 다음과 같인 나온다 

    2.객체의 반환 

    객체를 반환하는 작업은 JSON이나XML을 이용한다. 전달된 객체를 생산하기 위해서는 org.zerock.domain 패키지를 생성하고, SampleVO 클래스를 작성한다.

    SampleVO 클래스는 비어있는 생성자를 만들기위한 @NoArgsContructor와 모든 속성을 사용하는 생성자를 위한 @AllArgsConstructor 어노테이션을 이용했습니다. 어노테이션을 통해서 생성된 결과를 보면 생성자가 여러개 생성되는 것을 볼 수있습니다.

    SampleController에서는 SampleVO를 리턴하는 메서드를 아래와 같이 설계합니다.

    getSample()은 XML과 JSON 방식의 데이터를 생성 할 수 있도록 작성되었는데, 브라우저에서 ‘/sample/getSample’을 호출하면 다음과 같은 화면을 볼 수 있습니다.

    위의 결과는 브라우저가 받은 데이터가 XML이기 때문에 보이는 화면입니다. 개발자 도구를 통해서보면 정상적 XML데이터라는 것을 확인 가능하다 

    동일한 메서드를 ‘/sample/getSample.json’을 호출하게 되면 기존과달리 JSON타입의 데이터가 전달되는 것을 확인 할 수있다.

    @GetMapping이나 @RequestMapping의 produces 속성은 반드시 지정해야 하는 것은 아니므로 생략하는 것도 가능하다.

    3.컬렉션 타입의 객체 반환

    경우에 따라서는 여러 데이터를 한번에 전송하기 위해서 배열이나 리스트 맵타입의 객체로들을 전송하는 경우도 발생합니다.

    getList()는 내부적으로 1부터 10미만까지의 루프를 처리하면서 SampleVO 객체를 만들어서 List<SampleVO>로 만들어 낸다.

    브라우저를 통해서 ‘/sample/getList’를 호출하면서 기본적으로 XML데이터를 전송하는 것을 볼수 있습니다. 뒤에 확장자를 ‘.json’으로 처리하면 ‘[ ]’로 싸여진 JSON형태의 배열 데이터를 볼 수 있습니다.

    맵의 경우에는 키 와 값을 가지는 하나의 객체로 간주 됩니다.

    Map을 이용하는 경우에는 키에 속하는 데이터는XML로 변환되는 경우에 태그의 이름이 되기 때문에 문자열을 지정합니다.

    4.ResponseEntity 타입 

    REST 방식으로 호출하는 경우는 화면 자체가 아니라 데이터 자체를 전송하는 방식으로 처리되기 때문에 데이터를 요청한 쪽에서는 정상적인 데이터인지 비정상적인 데이터인지를 구분 할수있븐 확실한 방법을 제공해야만 합니다.

    ResponseEntity는 데이터와 함깨 HTTP 헤더의 상태 메시지등을 같이 전달하는 용도로 사용합니다. HTTP의 상태코드와 에러 메세지 등을 함께 데이터를 전달할 수 있기 때문에 받는 입장에서는 확실하게 결과를 알 수 있습니다. 

    check()는 반드시 ‘height’와 ‘weight’를 파라미터로 전달 받습니다. 이때 만일 ‘height’값이 150보다 작다면 502(bad gateway) 상태 코드와 데이터를 전송하고 , 그렇지 않다면 200(ok)코드와 데이터를 전송합니다.

    ‘/sample/check.json?height=140&weight=60‘과 같이 JSON 타입의 데이터를 요구하고 height 값을 150보다 작게 하는 경우에는 502메시지와 데이터가 전달됩니다.


    'Spring_FrameWork' 카테고리의 다른 글

    Ajax 댓글 처리  (0) 2018.11.29
    @RestController에서 파라미터  (0) 2018.11.28
    BoardMapper.xml에서Criteria처리  (0) 2018.11.28
    페이징 처리  (0) 2018.11.28
    json사용  (0) 2018.11.28
Designed by Tistory.