@PathVariable
- 설명: @PathVariable은 URL 경로의 일부로 전달되는 값을 매핑할 때 사용합니다. RESTful 스타일의 API 설계에서 자주 사용되며, 리소스의 특정 부분을 식별하는 데 유용합니다.
예시 :
@GetMapping("/users/{userId}")
public String getUser(@PathVariable("userId") Long userId) {
// userId를 사용하여 사용자 데이터를 처리
return "User ID: " + userId;
}
이 경우, /users/123라는 요청을 받으면 userId에 123이 매핑됩니다.
- 장점:
- RESTful 설계에 적합: URL 경로 자체에 리소스의 식별자를 포함할 수 있어 명확한 API 설계를 할 수 있습니다. 예를 들어, /users/123에서 123은 특정 사용자를 나타내므로 직관적입니다.
- 데이터 캡슐화: URL 경로에서 리소스를 특정지을 수 있으므로, 명시적으로 데이터를 전달하는 구조입니다.
- 단점:
- 유연성 제한: URL 패턴이 고정적입니다. 다수의 파라미터를 전달할 때 URL 경로가 복잡해질 수 있습니다.
- 데이터 전달 한정: 경로 변수로 전송할 수 있는 데이터는 단순 값(숫자나 문자 등)으로 제한됩니다.
@RequestParam
- 설명: @RequestParam은 URL의 쿼리 파라미터를 받아올 때 사용됩니다. 주로 필터링, 검색, 페이징과 같은 다양한 옵션을 전달할 때 사용됩니다.
예시 :
@GetMapping("/users")
public String getUsers(@RequestParam("page") int page, @RequestParam("size") int size) {
// 페이지와 사이즈 정보를 이용한 처리
return "Page: " + page + ", Size: " + size;
}
이 경우, /users?page=1&size=20라는 요청을 받으면 page는 1, size는 20으로 매핑됩니다.
- 장점:
- 유연성: URL 경로가 고정되지 않고, 여러 파라미터를 쉽게 전달할 수 있습니다. 다수의 필드를 넘길 때 유용합니다.
- 가독성: 여러 조건을 전달할 때 URL이 덜 복잡하게 유지됩니다. /users?page=1&size=20은 리소스를 나타내지 않고 추가적인 조건을 명시합니다.
- 단점:
- URL이 길어질 수 있음: 다수의 파라미터를 전달할 때, URL 쿼리 스트링이 길어지고 복잡해질 수 있습니다.
- 리소스 식별에 부적합: 리소스를 명확하게 식별하지 않고, 대신 리소스에 대한 속성을 전달하는 형태이기 때문에, 식별자보다는 조건을 표현하는 데 적합합니다.
'Spring > Spring 문법' 카테고리의 다른 글
Spring MVC 와 3 Layer Architecture (0) | 2024.10.20 |
---|---|
API와 HTTP 메서드 (4) | 2024.10.19 |
헤더와 바디 (3) | 2024.10.16 |
Defendenceis (1) | 2024.10.15 |
Spring Security 커스컴하여 formLogin // loginProcessingUrl (5) | 2024.10.11 |