*<스프링 부트 핵심 가이드>에 나온 내용을 실습해보는 포스팅입니다.
✔️ @RequestParam은 HTTP 요청의 쿼리 파라미터(Query Parameter) 값을 컨트롤러 메서드의 매개변수로 바인딩할 때 사용하는 어노테이션이다.
✔️ 쿼리 파라미터 값을 매개변수로 전달
클라이언트가 URL에서 ?key=value 형태로 데이터를 보낼 때 사용한다.
예 : /users/search?id=10 → id=10 값을 추출하여 매개변수에 저장.
✔️ 필터링, 정렬, 검색 등의 요청에 주로 사용된다.
package com.springboot.api.controller;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.springboot.api.dto.MemberDTO;
@RestController
@RequestMapping("/api/v1/get-api")
public class GetController {
// @RequestParam 사용 - URI에서 키=값 형태로 요청 전송하는 방법
@GetMapping("/request1")
public String getRequestParam1(@RequestParam String name, @RequestParam String email, @RequestParam String organization) {
return name+" "+email+" "+organization;
}
// 쿼리스트링에 어떤 값이 들어올지 모를 때
@GetMapping("/request2")
public String getRequestParam2(@RequestParam Map<String, String> param) {
StringBuilder sb = new StringBuilder();
param.entrySet().forEach(map -> {
sb.append(map.getKey() + " : " + map.getValue() + "\n");
});
return sb.toString();
}
// DTO 사용 : 쿼리스트링의 key가 정해져있지만 받아야 할 파라미터가 많을 경우
@GetMapping("/request3")
public String getRequestParam3(MemberDTO memberDTO) {
return memberDTO.toString();
}
}
package com.springboot.api.dto;
public class MemberDTO {
private String name;
private String email;
private String organization;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getOrganization() {
return organization;
}
public void setOrganization(String organization) {
this.organization = organization;
}
@Override
public String toString() {
return "MemberDTO [name=" + name + ", email=" + email + ", organization=" + organization + "]";
}
}
http://localhost:8080/api/v1/get-api/request1?name=value1&email=value2&organization=value3 이렇게
?key=value&key=value 형태로 요청이 들어간다.
쿼리 스트링에 어떤 값이 들어올지 모를 때에는 Map을 사용해준다.
http://localhost:8080/api/v1/get-api/request2?key=value&key2=value2
DTO를 만들어 사용하면 더 깔끔하다.
http://localhost:8080/api/v1/get-api/request3?name=value1&email=value2&organization=value3