1 minute read

URI

인터넷의 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있습니다.

URL

URL은 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 분명히 알려줍니다.

URN

유니폼 리소스 이름

리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 합니다.

2416C94158D62B9E11

요청 식별자로 맵핑하기

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 에 파라미터로 맵핑도 가능하다.

Categories:

Updated: