인프런 커뮤니티 질문&답변
5~6강 질문이요
작성
·
362
·
수정됨
답변 2
1
0
최태현
지식공유자
안녕하세요~~ ghdtldus03a 님!! 아주 좋은 질문이십니다~~ 👍
@RequestParam 은 GET API 혹은 DELETE API 에서 HTTP 쿼리를 객체가 아닌 각각의 파라미터로 받을 때만 사용할 수 있어서 그래요!!
예를 들어
@GetMapping("/xxx")
public void helloWorld(@RequestParam String name, @RequestParam int age) {
}위의 코드는 String 과 int 를 파라미터 (매개변수) 그대로 받았죠! 때문에 @RequestParam 을 작성해주었어요!
하지만 만약 이 두 필드를
public class HelloWorldRequest {
private final String name;
private final int age;
// 필요한 생성자 및 getter
}이렇게 객체로 묶어 주면
@GetMapping("/xxx")
public void helloWorld(HelloWorldRequest request) {
}@RequestParam 을 사용하지 않아야 동작하게 됩니다!
전체적으로 아래와 같이 정리하시면 됩니다~~ 👍
GET / DELETE
HTTP 쿼리를 사용한다. (ex.
/path?name=안녕?age=99)name과 age를 매개변수로 바로 받겠다 ->
@RequestParamname과 age를 객체로 묶어 받겠다 -> X
POST / PUT
HTTP Body를 사용한다. 무조건
@RequestBody
답변이 도움이 되었으면 좋겠습니다~ 감사합니다!!! 🙇






post방식은 dto 객체 앞에 @RequestBody가 있는데 get방식은 왜 dto객체 앞에 @RequestParam을 안 써요? 맨 처음에 dto 객체 없었을 때 매개변수 이용하였을 때는 @RequestParam 썼던 것 같은데..
우와 저도 이거 궁금했는데 정리가 너무 깔끔합니다. 감사합니다!! 열공 해보겠습니다