프레임워크/Spring

[Spring] URI patterns는 무엇인가?

멍토 2021. 4. 20.

Spring으로 개발을 하다보면 정확하게 딱 떨어지는 URI를 만들지 못할때가 있다.

이런 내용을 물론 RequestParam, Body에 데이터를 넣어서 처리할 수도 있지만 이걸 쓰기 애매할때도 있다.

(중간에 여러가지 변경되는 내용이 있다거나 메서드상 GET인데 Body를 써야해서 Post와 같은것을 사용해야 한다거나... )

이럴때는 보통 URL 패턴을 이용하게 된다.

  1. {PathValiable}
@GetMapping("/owners/{ownerId}/pets/{petId}")
public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) {
    // ...
}

@GetMapping에서 {} 안에 있는 것들이 유동적으로 변경이 가능한 PathVariable이다.

괄호안에 있는 내용으로 변수명을 지정하면 자동으로 매핑이 된다. (다르게 설정도 가능하다.)

  1. ?
@GetMapping("/resources/ima?e.png")

?는 경로에서 한 글자는 어떤 글자가 와도 상관이 없다.

여기서는 ima와 e.png 사이에 글자 하나가 아무거나 들어와도 상관이 없다.

  1. *
@GetMapping("/resources/*.png")

*은 경로 사이에 0개 이상의 문자열과 이치하면 상관이 없다.

여기서는 뒤에가 .png로만 끝나면 상관이 없다.

  1. **
@GetMapping("/resources/**")

**은 무엇이 들어와도 상관이 없다는 내용이다.

여기서는 Resources/ 뒤에 어떤 내용이 들어와도 해당 경로로 매핑이 된다.

(좀 더 상세하게 매핑된 내용이 있다면 해당 메서드로 빠진다.)

  1. {PathVariable + 정규식}
@GetMapping("/projects/{project:[a-z]+}/versions")

경로변수와 비슷하며 여기에 정규식이 추가 되었다.

출처 : https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-requestmapping-uri-templates

댓글

💲 광고입니다.