uri, url, url 설명과 url 패턴 맵핑
URI
인터넷의 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있습니다.
URL
URL은 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 분명히 알려줍니다.
URN
유니폼 리소스 이름
리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 합니다.
요청 식별자로 맵핑하기
url 패턴 맵핑 코드 controller 에서 url 을 맵핑할 때 서블릿때처럼 하나하나 지정하는 것이 아닌, 여러 패턴으로 편하고 간결하게 url 을지정해줄 수 있습니다.
@Controller
@RequestMapping("/hello")
public class WhiteShipSampleController {
@GetMapping("/**")
@ResponseBody
public String hello() {
return "hello";
}
}
url 패턴 맵핑 테스트 코드 controller 에서 /** 로 지정했으니 여러 패스의 url 요청이 들어와도 처리가능할 것입니다. 그렇기에 /hello/1123/123 으로 요청 보내도 충분히 200 OK 응답이 뜹니다.
void 요청테스트() throws Exception {
mockMvc.perform(get("/hello/1123/123"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string("hello"));
}
- @GetMapping(“/?”) -> “/hello/1123” ? 는 한글자
- @GetMapping(“/*”) -> “/hello/eojin” * 여러 글자
- @GetMapping(“/**”) -> “/hello/1123/123” ** 여러 패스
@RequestMapping(“/hello”)
- 클래스에 선언한 url 패턴 뒤에 이어붙여서 맵핑한다.
파라미터로 url 맵핑하기
- 예제로 name 을 파라미터로 받아서 url 에 맵핑해줄 것입니다. 그러기 위해선 @PathVariable 를 붙여줍니다
@PathVariable : URL 정의 부분과 Method 내의 Parameter 부분에 정의를 하여 사용이 가능합니다
@GetMapping("/{name:[a-z]+}")
@ResponseBody
public String hello(@PathVariable String name) {
return "hello" + name;
}
{name} 으로 브라우저의 응답값이 들어오고 그 변수가 url 에 그대로 맵핑되서 요청됩니다. /hello/eojin 식으로 요청이 들어올 것입니다. 파라미터에 문제가 없으면 200 OK 가 뜰 것입니다!
void 이름파라미터_요청테스트() throws Exception {
mockMvc.perform(get("/hello/{name}"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string("hello eojin"));
}
결론
- url uri 각자 이름은 다르지만 역할은 같다.
- url 에 파라미터로 맵핑도 가능하다.