JAVA/SPRING

@PathVariable

gracelove91 2019. 10. 20. 12:16

1020-스프링MVC-핸들러메소드-URI패턴

@GetMapping("/events/{id}")
public String getEvent(@PathVariable int id) {
...  
}
  • @GetMapping("/events/{id}")가 URI패턴이다.

핸들러

@GetMapping("/events/{id}")
    @ResponseBody
    public Event getEvent(@PathVariable Integer id) {
        Event event = new Event();
        event.setId(id);
        return event;
    }

클라이언트 역할하는 테스트코드.

    @Test
    public void getEvent() throws Exception {
        mockMvc.perform(get("/events/1"))
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(jsonPath("id").value(1));
    }
  • /events/1로 요청을 보내고있다. 당연히 문자열이다. 하지만 스프링에서는 자동 형변환해준다. (핸들러 메소드의 아규먼트를 볼 것.)
  • id값이 안들어오면 BadRequest 뜬다. 방지하려면 아규먼트타입에 required = false 집어넣어줄 것.
    • ex ) @PathVariable(required=false) Integer id