728x90
최근에 자주 헷갈렸던 @PathVariable과 @RequestParam의 차이점을 정리했다.
🔹 @PathVariable
URL 경로 자체에 값을 포함시켜 전달하는 방식.
RESTful한 웹 서비스에서 자주 쓰이며, 리소스를 식별하는 데 적합하다.
@GetMapping("/hello/{name}/{age}")
public String helloRequestPath(@PathVariable String name, @PathVariable int age) {
return String.format("Hello, @PathVariable.<br> name = %s, age = %d", name, age);
}
예를 들어 /hello/robbie/30 요청 시:
- name = robbie
- age = 30
👉 특정 리소스에 직접 접근하는 구조에 적합
🔹 @RequestParam
URL의 쿼리 매개변수(Query Parameter)를 통해 값을 전달받는 방식이다.
보통 ?key=value 형태로 전달되고, &로 여러 값을 연결할 수 있다.
📌 GET 방식 예시:
@GetMapping("/form/param")
public String helloGetRequestParam(@RequestParam String name,
@RequestParam(required = false) Integer age) {
return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
- name = robbie
- age = 30
👉 required = false를 붙이면 해당 값이 없어도 오류가 나지 않는다 (기본은 true)
📌 POST 방식 예시:
@PostMapping("/form/param")
public String helloPostRequestParam(@RequestParam String name,
@RequestParam int age) {
return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
👉 POST는 폼 전송 등에서 주로 쓰이고, 데이터는 URL이 아니라 요청 본문(body)에 담겨 전달된다.
🧠 알게 된 점
- @PathVariable은 리소스를 식별할 때, 경로에 값을 포함하여 하나의 특정한 데이터를 조회할 때 유용하다.
- @RequestParam은 필터링, 검색, 다중 데이터 전송 등에 사용되며 쿼리 파라미터 형식으로 값을 넘긴다.
- GET 방식은 조회나 검색, POST 방식은 데이터 등록 등에 주로 사용된다.
- required = false 옵션으로 필수 파라미터 여부를 조절할 수 있다.
💡 덧붙여 알게 된 개념들
- Lombok: 컴파일 타임에 바이트코드를 조작하여 코드의 반복을 줄여주는 라이브러리 (@Getter, @Builder 등)
- MVC 패턴: Model-View-Controller 구조로 책임을 분리해 유지보수성과 협업을 향상시킴
- ObjectMapper (Jackson): 자바 객체 ↔ JSON 간 직렬화/역직렬화를 도와주는 클래스
예: objectMapper.writeValueAsString(obj), objectMapper.readValue(json, Class.class)
'Springboot' 카테고리의 다른 글
[Springboot] Handler, @ExceptionHandler, @ControllerAdvice (1) | 2023.07.11 |
---|---|
[Springboot] 관계 매핑(ORM; Object Relational Mapping) N:M (0) | 2023.07.07 |
[Springboot] Security (0) | 2023.07.01 |
[Springboot] login 구현 (0) | 2023.06.29 |
[Springboot] @Valid (0) | 2023.06.28 |