@RequestParam vs @PathVariable

Hyun·2023년 12월 3일
0

Spring

목록 보기
26/38
post-thumbnail

@RequestParam

input 태그의 name 이 @RequestParam 의 변수명과 같아야 한다.

<form action="http://localhost:8080/gym/search/trainer/specialization" method="post">
    <h1>Trainer Specialization</h1>
    <label>Specialization1
        <input type="text" name="specialization1">
    </label>
    <label>Specialization2
        <input type="text" name="specialization2">
    </label>
    <input type="submit" value="전송">
</form>

postman 에서는 다음과 같이 사용할 수 있다.

@PostMapping("/gym/search/trainer/specialization")
    public String trainerResultView(@RequestParam String specialization1, @RequestParam(required = false, defaultValue = "") String specialization2, Model model) throws Exception {
        String[] specializations = new String[]{specialization1, specialization2};
        List<TrainerViewDto> trainerList = gymSearchService.findByTrainerSpecialization(specializations);
        model.addAttribute("trainerList", trainerList);
        return "gym_search/trainerField";
    }

@PathVariable

get 요청에서 url 의 특정 부분을 변수로 가져올 수 있다. 이를 통해 다양한 status 값에 대해 하나의 @GetMapping 으로 처리할 수 있다.

아래 예제는 오름/내림차순 uri 값을 통해 조정하여 값을 불러올 수 있다.

@GetMapping("/gym/search/review/{status}")
    public String reviewResultView(@PathVariable String status, Model model) {
        List<GymViewDto> gymList = gymSearchService.findByReviewRate(status);
        model.addAttribute("gymList", gymList);
        return "gym_search/gymRate";
    }
profile
better than yesterday

0개의 댓글