REST와 관련된 어노테이션

·2023년 7월 16일
0

프로젝트 공부

목록 보기
18/33
어노테이션기능
@RestControllerController가 REST 방식을 처리하기 위한 것임을 명시한다.
@ResponseBody뷰로 전달되는게 아니라 데이터 자체를 전달하기 위한 용도
@RequestBodyJSON 데이터를 원하는 타입으로 바인딩 처리
@PathVariableURL 경로에 있는 값을 파라미터로 추출하려고 할 때 사용
@CrossOriginAjax 크로스 도메인 문제를 해결해주는 어노테이션

@RequestBody & @ResponseBody


@RequestBody와 @ResponseBody는 요청과 응답에 관한 어노테이션으로 스프링 비동기 처리를 하는 경우 사용한다.

사용 목적

웹페이지에서 json으로 요청한 파라미터를 java에서 받으려면 java Object로의 변환이 일어나야 하고 또한 response 시에도 java Objectjson으로 변환이 필요하다.
이때 이 두 어노테이션을 이용해 JSON이나 key/value, XML 형태로 데이터를 송수신할 수 있다

  • @RequestBody
    HTTP body 안에 JSON을 VO에 맵핑하는 스프링 어노테이션
    HTTP 요청을 자바 객체로 전달받을 수 있다.

  • @ResponseBody
    VO객체를 JSON으로 바꿔서 HTTP body에 담는 스프링 어노테이션
    메서드의 return 값을 HTTP Response body에 담는 역할을 한다.

@RestController

참고 🔗@RestController란?
@RestController = @Controller + @ResponseBody
Test용 컨트롤러에 사용된다.

매번 메소드마다 @ResponseBody를 써주기 귀찮을 때 @RestController를 써주면 리턴 값에 자동으로 ResponseBody가 붙어 리턴된다
=>HTTP Response body에 자동으로 자바 객체가 매핑되어 전달된다

@Controller vs @RestController

1. @Controller

@Controller
public class Cont {
    @RequestMapping(value = "/cont")
    public String Test1() {
        return "test1.html";
    }
}

결과로는 test1.html로 이동해 Hello World를 출력한다

2. @RestController

@RestController
public class RestCont {
    @RequestMapping("/")
    public String RestTest(){
        return "test1.html";
    }
}

@RestController를 사용할 경우 뷰로 이동하는게 아니라 test1.html 문자열 자체를 반환해준다.

만약 RestController를 사용할 경우 ModelAndView클래스를 이용한다.

@RestController
public class RestCont {
    @RequestMapping(value = "/test2")
    public ModelAndView Test1() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("test1.html");
        return modelAndView;
    }
}

test1.html로 이동하여 Hello World가 출력된 것을 볼 수 있다.

참고
@ResponseBody & @RequestBody
@RestController

profile
개발자가 되고싶은 낭랑 24세

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기

관련 채용 정보