-
@RequestBody vs @RequestParam스프링 2023. 2. 21. 01:54
오랜만에 스프링을 통해 작업하려던중, 이 둘이 헷갈려서 정리하기로 하였다.
form태그를 통하여 데이터를 전송하려 한다.
@RequestParam은 HTTP 요청 파라미터를 받아온다.
HTTP의 Body를 직접 조회하지 않는다.
@ResponseBody @PostMapping("test/request-param") public TestData requestParam(@RequestParam String name, @RequestParam int age) { TestData testData = new TestData(); testData.setName(name); testData.setAge(age); return testData; }
즉, test/request-param?name="abc"&age=2 의 형태로 요청을 하게 된다.
form이라고 헷갈리지 말자.
form요청은 HttpBody에 쿼리 파라미터 형식으로 전달하기때문에 RequestParam또는 ModelAttribute를 통하여 값을 받아야 한다.
(form이 Body로 전송되기때문에 requestBody를 사용해야 할줄알고 한참을 헤맸다ㅜㅜ)
@RequestBody는 클라이언트가 JSON형태의 데이터를 HTTP Body내용을 Object로 변환시키는 역할을 해준다.
@ResponseBody @PostMapping("/test/request-body") public TestData requestBody(@RequestBody TestData testData) { return testData; }
뿐만아니라, HttpBody에 Text를 직접 찍어서 보낼때도 RequestBody를 이용하는것이 가능하다.
728x90'스프링' 카테고리의 다른 글
Swagger 404 오류 (0) 2023.03.31 시큐리티의 CSRF 그리고 테스트 (0) 2023.03.05 API 예외처리-5 (RestControllerAdvice) (0) 2023.01.28 API 예외처리-4 (ExceptionHandler) (0) 2023.01.28 API 예외처리-3 (0) 2023.01.27