Spring Boot 강좌5 : Path Variable과 Request Param

coldrice99·2024년 10월 1일
0

TIL : Path Variable과 Request Param

오늘은 Spring에서 HTTP 요청 데이터를 처리하는 방법 중 하나인 @PathVariable@RequestParam에 대해 학습했다. 이 두 가지는 클라이언트가 서버에 데이터를 전송할 때 사용되는 방식이며, 각 방식에 따라 데이터를 처리하는 방법이 조금씩 다르다.

1. Path Variable

  • @PathVariable은 URL 경로에 데이터를 포함하여 서버로 전달할 때 사용한다. 예를 들어, 클라이언트가 GET http://localhost:8080/hello/request/star/Robbie/age/95와 같은 요청을 보내면, 서버는 "Robbie"와 "95"라는 데이터를 URL 경로에서 추출하여 사용할 수 있다.
예시 코드:
@GetMapping("/star/{name}/age/{age}")
@ResponseBody
public String helloRequestPath(@PathVariable String name, @PathVariable int age) {
    return String.format("Hello, @PathVariable.<br> name = %s, age = %d", name, age);
}
  • 이 코드에서 {name}{age}는 URL 경로에 있는 데이터를 받아오는 변수이다. @PathVariable 어노테이션을 사용하여 메서드 파라미터로 해당 값을 가져올 수 있다.

2. Request Param

  • @RequestParam은 쿼리 파라미터를 통해 데이터를 서버로 전달할 때 사용한다. 예를 들어, GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95와 같이 요청을 보내면, 서버는 URL의 쿼리 파라미터에서 데이터를 추출하여 사용할 수 있다.
예시 코드:
@GetMapping("/form/param")
@ResponseBody
public String helloGetRequestParam(@RequestParam String name, @RequestParam int age) {
    return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
  • @RequestParam을 사용하면 쿼리 파라미터의 nameage 값을 쉽게 받아올 수 있다.

3. POST 요청 시 Request Param

  • @RequestParamPOST 요청에서도 사용할 수 있다. 이때 데이터는 HTTP Body에 포함되어 전송된다.
예시 코드:
@PostMapping("/form/param")
@ResponseBody
public String helloPostRequestParam(@RequestParam String name, @RequestParam int age) {
    return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
  • 이 경우 HTML의 form 태그를 사용하여 데이터를 전송하며, 서버는 @RequestParam을 통해 데이터를 수신한다.

4. @PathVariable과 @RequestParam의 옵션

  • @RequestParam(required = false): 해당 파라미터가 필수가 아님을 의미하며, 클라이언트가 값을 전달하지 않아도 오류가 발생하지 않는다.
  • @PathVariable(required = false): 마찬가지로 경로 변수 값이 없더라도 오류 없이 처리된다. 값이 없으면 해당 변수는 null로 초기화된다.

느낀 점

  • @PathVariable@RequestParam은 클라이언트-서버 간 데이터 전달 방법을 이해하는 데 있어 중요한 요소다. 상황에 따라 적절한 방식을 선택하는 것이 RESTful API 설계의 핵심이다. 이번 학습을 통해 두 방식의 차이와 사용법을 명확히 이해할 수 있었다.
profile
서두르지 않으나 쉬지 않고

0개의 댓글