MVC 활용(10) : 핸들러 메소드 2부 - URI 패턴
10. 핸들러 메소드 2부 - URI 패턴
@PathVariable
- 요청 URI 패턴의 일부를 핸들러 메소드 아규먼트로 받는 방법.
- 타입 변환 지원.
- (기본)값이 반드시 있어야 한다.
- Optional 지원.
public class Event {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Controller
public class SampleController {
@GetMapping("/events/{id}")
@ResponseBody
public Event getEvent(@PathVariable Integer id){
Event event = new Event();
event.setId(id);
return event;
}
}
@RunWith(SpringRunner.class)
@WebMvcTest
public class SampleControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void getEvent() throws Exception{
mockMvc.perform(get("/events/1"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
자바 8부터는 Optional을 쓸 수도 있다. 이렇게 되면 @PathVariable( required=false)를 준거랑 마찬가지이다.
@Controller
public class SampleController {
@GetMapping("/events/{id}")
@ResponseBody
public Event getEvent(@PathVariable Optional<Integer> id){
Event event = new Event();
event.setId(id);
return event;
}
}
@MatrixVariable
- 요청 URI 패턴에서 키/값 쌍의 데이터를 메소드 아규먼트로 받는 방법
- 타입 변환 지원.
- (기본)값이 반드시 있어야 한다.
- Optional 지원.
- 이 기능은 기본적으로 비활성화 되어 있음. 활성화 하려면 다음과 같이 설정해야 함.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(urlPathHelper);
}
}
@Controller
public class SampleController {
@GetMapping("/events/{id}")
@ResponseBody
public Event getEvent(@PathVariable("id") Integer idValue, @MatrixVariable String name){
Event event = new Event();
event.setId(idValue);
event.setName(name);
return event;
}
}
@RunWith(SpringRunner.class)
@WebMvcTest
public class SampleControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void getEvent() throws Exception{
mockMvc.perform(get("/events/1;name=spring"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
참고
- 인프런 : 스프링 웹 MVC(백기선)
- https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-typeconversion
- https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-matrix-variables
Author And Source
이 문제에 관하여(MVC 활용(10) : 핸들러 메소드 2부 - URI 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsj3282/스프링-MVC-활용10-핸들러-메소드-2부-URI-패턴저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)