일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- method refetence
- ioc컨테이너
- 스프링시큐리티
- 비기능적 요구사항
- 생성자주입
- jpa no session
- java predicate
- kotlin 리팩터링
- kotlin ::
- 자바 필터
- 수정자주입
- 스프링 포매터
- open-session-in-view
- IOC
- 정적팩토리메서드
- 동적파라미터
- 도커 이미지 빌드
- 기능적 요구사항
- 스프링부트 도커
- 스프링
- Spring
- 스프링 시큐리티 설정
- Atomicity
- spring formatter
- jpa lazy
- 스프링di
- 소프트웨어의 품격
- 토비의 스프링
- fetch join
- 그래프큐엘
Archives
- Today
- Total
공부기록
@RequestMapping의 value 패턴. 본문
반응형
- @RequestMapping("/hello")
- hello 주소 요청만 매핑된다.
- @RequestMapping("/hello?")
- hello 뒤 한글자만 붙어야 매핑된다.
- @RequestMapping("/hello/*")
- hello 뒤 / 이후 하나의 뎁스만 매핑된다.
- @RequestMapping("/hello/**")
- hello 뒤 / 이후 여러개의 뎁스가 매핑된다.
- @RequestMapping("/hello/[a-z]+")
- hello 뒤 / 이후 정규표현식이 매핑된다.
SampleController.java
@Controller
@RequestMapping
public class SampleController {
@RequestMapping(value = {"/hello", "/hi"})
@ResponseBody
public String hello() {
return "hello";
}
@RequestMapping("/hello?")
@ResponseBody
public String helloMustBeBehindOneChar() {
return "hello one char";
}
@RequestMapping("/hello/*")
@ResponseBody
public String helloMustBeBehindOneDepth() {
return "hello one depth";
}
@RequestMapping("/hello/**")
@ResponseBody
public String helloMustBeBehindOverOneDepth() {
return "hello over one depth";
}
@RequestMapping("/hello/{name:[a-z]+}")
@ResponseBody
public String helloPathVariableRegx(@PathVariable String name) {
return "hello regx " + name;
}
}
SampleControllerTest.java
@RunWith(SpringRunner.class)
@WebMvcTest
public class SampleControllerTest {
@Autowired
private MockMvc mockMvc;
/**
*
* 리퀘스트 매핑의 주소는 @RequestMapping(value = {"/hello", "/hi"}) 다.
*/
@Test
public void helloTest() throws Exception {
mockMvc.perform(get("/hello"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string("hello"))
.andExpect(handler().method(SampleController.class.getMethod("hello")));
}
/**
*
* 리퀘스트매핑의 주소는 @RequestMapping("/hello?") 다.
*/
@Test
public void helloMustBeBehindOneCharTest() throws Exception {
mockMvc.perform(get("/helloa"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string("hello one char"))
.andExpect(handler().method(SampleController.class.getMethod("helloMustBeBehindOneChar")));
}
/**
*
* 컨트롤러의 @RequestMapping("/hello?") 는 hello 뒤 한 글자만 매핑된다.
*/
@Test
public void helloMustBeBehindOneCharTest_두글자이상_expect_not_found() throws Exception {
mockMvc.perform(get("/helloaa"))
.andDo(print())
.andExpect(status().isNotFound());
}
/**
*리퀘스트매핑의 주소는 @RequestMapping("/hello/*") 다.
*
*/
@Test
public void helloMustBeBehindOneDepth() throws Exception {
mockMvc.perform((get("/hello/1")))
.andDo(print())
.andExpect(handler().methodName("helloMustBeBehindOneDepth"));
}
/**
*
* 리퀘스트매핑의 주소는 @RequestMapping("/hello/**")다.
*/
@Test
public void helloMustBeBehindOverOneDepth() throws Exception {
mockMvc.perform((get("/hello/1/2")))
.andDo(print())
.andExpect(handler().methodName("helloMustBeBehindOverOneDepth"));
}
/**
*
* 리퀘스트매핑의 주소는 @RequestMapping("/hello/{name:[a-z]+}") 다.
* 정규표현식 사용한다.
*/
@Test
public void helloRegx() throws Exception {
mockMvc.perform((get("/hello/eunmo")))
.andDo(print())
.andExpect(handler().methodName("helloPathVariableRegx"))
.andExpect(content().string("hello regx eunmo"));
}
}
반응형
'Spring' 카테고리의 다른 글
[Spring]비즈니스 인터페이스에서 의존성을 정의하지 말라. (0) | 2019.10.26 |
---|---|
@PathVariable (0) | 2019.10.20 |
[SPRING SECURITY] ignoring() - 필터에서 벗어나보자 (0) | 2019.10.18 |
[SPRING MVC] Formatter (2) | 2019.10.14 |
[SPRING SECURITY] 1012 공부(아키텍쳐 마지막 정리.) (2) | 2019.10.12 |