[Spring Boot] GET API 3 - 매개변수 받는 메서드 (@RequestParam)

박현아·2025년 2월 26일
0

Spring Boot

목록 보기
4/5

*<스프링 부트 핵심 가이드>에 나온 내용을 실습해보는 포스팅입니다.

🥕 GET API 실습 3 - 매개변수 받는 메서드 (@RequestParam)

@RequestParam이란?

✔️ @RequestParam은 HTTP 요청의 쿼리 파라미터(Query Parameter) 값을 컨트롤러 메서드의 매개변수로 바인딩할 때 사용하는 어노테이션이다.
✔️ 쿼리 파라미터 값을 매개변수로 전달
클라이언트가 URL에서 ?key=value 형태로 데이터를 보낼 때 사용한다.
예 : /users/search?id=10 → id=10 값을 추출하여 매개변수에 저장.
✔️ 필터링, 정렬, 검색 등의 요청에 주로 사용된다.

GetController.java

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();
	}
	
}

MemberDTO.java

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 + "]";
	}

}

작동 테스트

getRequestParam1


http://localhost:8080/api/v1/get-api/request1?name=value1&email=value2&organization=value3 이렇게
?key=value&key=value 형태로 요청이 들어간다.

getRequestParam2


쿼리 스트링에 어떤 값이 들어올지 모를 때에는 Map을 사용해준다.
http://localhost:8080/api/v1/get-api/request2?key=value&key2=value2

getRequestParam3


DTO를 만들어 사용하면 더 깔끔하다.
http://localhost:8080/api/v1/get-api/request3?name=value1&email=value2&organization=value3

0개의 댓글