강의

멘토링

커뮤니티

Inflearn Community Q&A

ghdtldus03a4454's profile image
ghdtldus03a4454

asked

Create your first server with Java and Spring Boot, from development to deployment, easily! [All-in-one server development package]

Lecture 5. Developing and Testing GET APIs

5~6강 질문이요

Written on

·

378

·

Edited

1

post방식은 dto 객체 앞에 @RequestBody가 있는데 get방식은 왜 dto객체 앞에 @RequestParam을 안 써요? 맨 처음에 dto 객체 없었을 때 매개변수 이용하였을 때는 @RequestParam 썼던 것 같은데..

javaspringawsmysqlspring-bootjpa

Answer 2

1

ghdtldus03a님의 프로필 이미지
ghdtldus03a
Questioner

와우 여러 번 읽다 보니 이해가 가네요. 답변도 빠르게해주시고 알아듣기 쉽게 해주셔서 감사합니다

0

lannstark님의 프로필 이미지
lannstark
Instructor

안녕하세요~~ ghdtldus03a 님!! 아주 좋은 질문이십니다~~ 👍

 

@RequestParam 은 GET API 혹은 DELETE API 에서 HTTP 쿼리를 객체가 아닌 각각의 파라미터로 받을 때만 사용할 수 있어서 그래요!!

예를 들어

@GetMapping("/xxx")
public void helloWorld(@RequestParam String name, @RequestParam int age) {

}

위의 코드는 Stringint파라미터 (매개변수) 그대로 받았죠! 때문에 @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를 매개변수로 바로 받겠다 -> @RequestParam

    • name과 age를 객체로 묶어 받겠다 -> X

  • POST / PUT

    • HTTP Body를 사용한다. 무조건 @RequestBody

 

답변이 도움이 되었으면 좋겠습니다~ 감사합니다!!! 🙇

우와 저도 이거 궁금했는데 정리가 너무 깔끔합니다. 감사합니다!! 열공 해보겠습니다

ghdtldus03a4454's profile image
ghdtldus03a4454

asked

Ask a question