inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

요청 매핑 - API 예시

RestController GetMapping의 중복 질문

190

JongYun Won

작성한 질문수 16

0

MappingClassController에서 구현한 GetMapping은

/mapping/users + GET으로 호출합니다.

@GetMapping("/mapping/users")
public String user() {
    return "get users";
}

이 때, 앞서 구현한 MappingController에서 구현한

@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {
    log.info("mappingPath userId={}", data);
    return "ok";
}

위 코드는 /mapping/{userId} + GET으로 호출합니다.

 

  1. 위 상황에서, /mapping/users를 GET으로 조회할 경우

  2. MappingClassController가 호출됩니다.

제가 궁금한 것은,

  1. 두 컨트롤러 사이에 우선순위가 존재하나요?

  2. 그렇지 않다면 Spring은 같은 문자열인 users가 {userId}가 아닌 것을 어떻게 구별하나요?

spring mvc

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. JongYun Won님,

스프링 MVC에서 경로 매핑과 관련한 질문을 주셨군요. 유사한 질문과 답변들을 찾아 보았으니 참고 부탁드립니다.

  1. URL PathVariable과 고정 문자열 URL 매핑 우선순위:
    • 스프링에서는 기본적으로 고정 URL 패턴이 가변 URL 패턴보다 우선하게 됩니다. 따라서 /mapping/users/mapping/{userId} 가 동시에 매핑되면, /mapping/users 가 우선 호출됩니다.

예를 들어, 다음 링크와 유사한 질문이 있습니다:
- @GetMapping 관련 질문입니다
- PathVariable에 의해 api URL이 중복되는 경우에는 어떻게 되나요?

  1. Spring이 고정 문자열과 PathVariable을 구별하는 방식:
    • 스프링은 컨트롤러에서 명시된 경로 패턴과 요청된 URL을 매핑할 때, 먼저 고정 문자열을 가진 패턴을 확인하고 그 뒤에 가변 패턴을 확인합니다. 따라서 위에서 예시로 든 users는 고정 문자열을 가진 패턴으로 매핑되고, {userId}는 그 다음으로 매핑됩니다.

추가로 참조할 수 있는 링크는 다음과 같습니다:
- GetMapping() path 질문
- @GetMapping 질문있습니다

위의 링크들을 참고해 보시면, 스프링의 경로 매핑 우선순위와 PathVariable 매핑 관련 더 자세한 정보를 얻으실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

JongYun Won

인턴님 ㄳ

servlet과 container에 대한 질문입니다

0

25

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

64

1

jsp 의존성 수정 요청

0

78

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

143

1

save() 메서드 문의

0

67

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

101

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

97

1

RequestMapping을 이용한 핸들러, 어댑터

0

119

2

save 후 결과화면

0

89

2

jsp를 이용한 view

0

97

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

178

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

100

3

파일 오픈 시

0

70

1

스프링 배치 관련

0

78

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

112

1

postman으로 /request-body-json-v1 호출시 500 error

0

95

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

79

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

111

1

console log 출력 관련 질문입니다.

0

75

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

139

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

76

2