@GetMapping 사용법
@GetMapping("/api/problem-set/{id}")
public ResponseEntity<ProblemSetResponse> getProblemSet(@PathVariable Long id) {
ProblemSet problemSet = problemSetService.getProblemSet(id); // 서비스에서 문제지 조회
return ResponseEntity.ok(new ProblemSetResponse(problemSet));
}
동작 방식
- GET /api/problem-set/1 이런 요청이 들어오면
- {id}에 1이 들어감
- @PathVariable Long id가 1을 받음
- problemSetService.getProblemSet(1)이 실행됨
@RequestParam과 차이점은?
- @PathVariable → URL 경로에 포함된 값을 받아옴
- @RequestParam → 쿼리 파라미터 값을 받아옴
@PathVariable 예제
@GetMapping("/api/problem-set/{id}")
public ResponseEntity<ProblemSetResponse> getProblemSet(@PathVariable Long id) {
return ResponseEntity.ok(problemSetService.getProblemSet(id));
}
- 요청 URL: GET /api/problem-set/1
- id 값은 URL의 일부로 전달됨 (/1)
@RequestParam 예제
@GetMapping("/api/problem-set")
public ResponseEntity<ProblemSetResponse> getProblemSet(@RequestParam Long id) {
return ResponseEntity.ok(problemSetService.getProblemSet(id));
}
- 요청 URL: GET /api/problem-set?id=1
- id 값은 쿼리 파라미터로 전달됨 (?id=1)
왜 @PathVariable을 써야 할까?
- RESTful API 원칙에 맞게 GET /resource/{id} 형태로 표현
- URL 자체가 리소스의 계층을 나타내므로 더 직관적이고 의미가 명확
- @RequestParam보다 리소스를 명확하게 식별하는 데 유리
즉, 특정 문제지(ProblemSet)를 가져오는 API라면 @PathVariable을 쓰는 게 더 적절하다.
'EduClass Project' 카테고리의 다른 글
[Project] N:M 매핑에서 복합 키(Composite Key)를 사용할 때 주의할 점 (0) | 2025.03.05 |
---|---|
[Project] 불필요한 Entity 제거를 통한 데이터베이스 설계 최적화 – Test Entity를 없앤 이유 (0) | 2025.03.05 |
[Project] (3) 프로젝트 시작(MVC 패턴, 디렉토리 구조) (1) | 2025.02.05 |
[Project] (2) 프로젝트 시작(Entity 설계, 변수명) (1) | 2025.01.24 |
[Project] (1) 프로젝트 시작(플로우차트, Entity 설계) (1) | 2025.01.23 |