Spring Boot에서 요청 파라미터 전달 방법

이전 글에서는 Spring Boot의 설정 파일과 Controller 사용법을 살펴보았습니다. 이번에는 요청 파라미터를 어떻게 전달하고 처리하는지에 대해 알아보겠습니다. 일반적으로 웹 요청 시 URL 뒤에 ?와 & 기호를 사용해 파라미터를 전달합니다. Spring Boot에서도 이 방식을 지원하며, 서버 측에서 이를 수신하기 위해 @RequestParam 어노테이션을 활용할 수 있습니다. 이 어노테이션은 세 가지 주요 속성을 가집니다: value, required, defaultValue. 각각의 의미를 아래에서 설명합니다. 다음 예제는 기본적인 파라미터 수신 방법입니다: @RequestMapping(value = "/param1", method = RequestMethod.GET) public String handleParam1(@RequestParam("username") String username) { return username; } 이 코드는 클라이언트가 `http://localhost:8080/param1?username=john`처럼 요청하면, "john"을 반환합니다. 다음은 선택적 파라미터 처리 예시입니다: @RequestMapping(value = "/param2", method = RequestMethod.GET) public String handleParam2(@RequestParam(value = "age", required = false) Integer age) { if (age != null) { return "나이: " + age; } else { return "나이 정보 없음"; } } 여기서 `required=false`로 설정했기 때문에, 파라미터가 전달되지 않아도 오류가 발생하지 않습니다. 이는 필수 파라미터가 아님을 의미합니다. 또한 기본값을 설정하는 경우는 다음과 같습니다: @RequestMapping(value = "/param3", method = RequestMethod.GET) public String handleParam3(@RequestParam(value = "city", defaultValue = "서울") String city) { return "도시: " + city; } 만약 요청에 `city` 파라미터가 포함되지 않으면, 기본값인 "서울"이 사용됩니다. 이 외에도 경로 변수를 통해 파라미터를 전달하는 방식이 있습니다. 예를 들어 다음처럼 경로에 변수를 포함할 수 있습니다: @RequestMapping(value = "/user/{userId}", method = RequestMethod.GET) public String handlePath(@PathVariable("userId") Long userId) { return "사용자 ID: " + userId; } 이 경우 `http://localhost:8080/user/123`처럼 요청하면, 123을 반환합니다. 또한 중첩된 경로에서도 동일하게 적용 가능합니다: @RequestMapping(value = "/api/{version}/data", method = RequestMethod.GET) public String handleNestedPath(@PathVariable("version") String version) { return "버전: " + version; } 이렇게 경로 변수를 활용하면, 더 자연스럽고 명확한 API 구조를 설계할 수 있습니다. 마지막으로, 정적 리소스(예: 이미지, 스타일시트)를 커스터마이징하여 추가로 제공하고 싶을 때는 다음과 같이 구성합니다: @SpringBootApplication public class Application extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { super.addResourceHandlers(registry); // /images/** 경로를 클래스패스의 /images 폴더에 매핑 registry.addResourceHandler("/images/**") .addResourceLocations("classpath:/images/"); } } 이 설정을 통해 `resources/images/` 폴더 내의 파일을 외부에서 `/images/` 경로로 접근할 수 있게 됩니다. 기존의 기본 리소스 경로(정적 파일, 템플릿 등)와 동시에 작동하므로 안전하게 확장 가능합니다. 이번 내용은 파라미터 전달 및 정적 리소스 설정에 대한 핵심 개념을 다룹니다. 다음 글에서는 데이터베이스 연동 및 영속성 처리에 대해 소개하겠습니다.

태그: Spring Boot RequestMapping @RequestParam @PathVariable ResourceHandler

6월 20일 02:35에 게시됨