강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ghdtldus03a4454
ghdtldus03a4454

câu hỏi đã được viết

Tạo máy chủ đầu tiên của bạn bằng Java và Spring Boot Bất kỳ ai cũng có thể dễ dàng chuyển từ giai đoạn phát triển sang triển khai! [Gói phát triển máy chủ tất cả trong một]

Bài 5. Phát triển và kiểm tra GET API

5~6강 질문이요

Viết

·

374

·

Đã chỉnh sửa

1

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

javaspringawsmysqlspring-bootjpa

Câu trả lời 2

1

ghdtldus03a님의 프로필 이미지
ghdtldus03a
Người đặt câu hỏi

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

0

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

안녕하세요~~ 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

 

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

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

Hình ảnh hồ sơ của ghdtldus03a4454
ghdtldus03a4454

câu hỏi đã được viết

Đặt câu hỏi