-
핸들러 메소드 2부: URI 패턴SPRING/스프링 MVC 2021. 6. 27. 23:46
@PathVariable
- 요청 URI 패턴의 일부를 핸들러 메소드 아규먼트로 받는 방법.
- 타입 변환 지원.
- (기본)값이 반드시 있어야 한다.
- Optional 지원 : @PathVariable(require = false)
@MatrixVariable
- 요청 URI 패턴에서 키/값 쌍의 데이터를 메소드 아규먼트로 받는 방법
- 타입 변환 지원.
- (기본)값이 반드시 있어야 한다.
- Optional 지원.
- 이 기능은 기본적으로 비활성화 되어 있음. 활성화 하려면 다음과 같이 설정해야 함
@Controller public class SampleController { @GetMapping("/events/{id}") @ResponseBody public Event getEvent(@PathVariable(required = false) Integer id) { Event event = new Event(); event.setId(id); return event; } @GetMapping("/events2/{id}") @ResponseBody public Event getEvent2(@PathVariable Integer id, @MatrixVariable String name) { Event event = new Event(); event.setId(id); event.setName(name); System.out.println("event id : " + id + " event name : " + name); return event; } }
@MatrixVariable을 사용하기 위해서는 아래와 같이 URL에서 세미콜론(;)을 사용할 수 있도록 설정을 해야한다.
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper = new UrlPathHelper(); // URL에 있는 세미콜론(;)을 제거하지 않도록 false로 변경 urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } }
테스트 케이스 및 URL
@RunWith(SpringRunner.class) @WebMvcTest public class Hm2Test { @Autowired MockMvc mockMvc; @Test public void getEvents() throws Exception { mockMvc.perform(get("/events/1")) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("id").value(1)); } @Test public void getEvents2() throws Exception { mockMvc.perform(get("/events2/1;name=jump")) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("id").value(1)); } }
'SPRING > 스프링 MVC' 카테고리의 다른 글
핸들러 메소드 4부: 폼 서브밋 (타임리프) (0) 2021.07.03 핸들러 메소드 3부: @RequestParam (0) 2021.06.30 HTTP 요청 맵핑하기 7부: 맵핑 연습 문제 (0) 2021.06.27 요청 맵핑하기 6부 커스텀 애노테이션 (0) 2021.06.27 HTTP 요청 맵핑하기 4부: 헤더와 매개변수 (0) 2021.06.26