[Spring] RequestMapping이란?
[Spring] RequestMapping이란?
RequestMapping
컨트롤러 구현 = 클라이언트의 요청을 처리할 메서드를 구현- client는 URL로 요청을 전송
- 요청 RUL을 어떤 메서드가 처리할지 여부를 결정하는 것이 @RequestMapping
ex)
어떤 경로를 한 메서드에 처리하고 싶다면, 배열로 경로 목록을 지정하면 됨
@PathVariable을 이용한 경로 변수
- 경로를 한개 이상 사용도 가능
- 게시글의 내용을 보여주는 URL을 보면 http://host/readArticles?id=10와 같이 요청 파라미터를 이용하는 경우가 많음
- but) URL자체를 이용해서 게시글 링크를 표현하는 경우도 많음
- @RequestMapping 어노테이션은 경로에 {변수}형식의 경로 변수를 사용할 수 있음
- @PathVariable을 사용하면 경로 변수 값을 파라미터로 전달받을 수 있음
- Spring은 경로 변수의 값을 파라미터 타입에 맞게 변환해줌
- 경로 변수를 파라미터 타입으로 변환할 수 없을 경우, 스프링 MVC는 웹 브라우저에서 400에러 코드를 응답 결과로 전송함
Ant 패턴을 이용한 경로 매핑
* : 또는 그 이상의 글자(matches zero or more characters)
- ex) @RequestMapping("/member/*.info")
- /member/로 시작하고, 확장자가 .info로 끝나는 모든 경로
? : 1개 글자(matches one character)
- ex) @RequestMapping("/faq/f?00.fq")
- /faq/f로 시작하고, 1글자가 사이에 위치하고 00.fq로 끝나는 모든 경로
** : 0개 또는 그 이상의 디렉토리 경로(matches zero or more directories in path)
- ex) @RequestMapping("/folders/**/files")
- /folders/로 시작하고, 중간에 0개 이상의 중간 경로가 존재하고 /files로 끝나는 모든 경로 예를 들어, /folders/files, /folders/1/2/3/fiels 등이 매핑됨.
처리 가능한 요청 컨텐트 타입, 응답 가능한 컨텐트 타입 한정
- 서비스 또는 클라이언트/서버간 통신 방식으로 REST API가 자리를 잡으면서 HTTP의 데이터로 JSON이나 XML을 전송하는 경우가 증가
- @ReqeustMapping은 컨트롤러 메서드에서 처리 가능한 요청 컨텐트 타입과 응답 컨텐트 타입을 제한하는 방법을 제공
- 같은 URL이라 하더라도 컨텐트 타입에 따라 다른 응답을 보여주도록 처리
- 요청 컨텐트 타입 제한 = consumes 속성을 사용하면 됨
- ex) Content - Type 요청 헤더가 "application/json"인 경우만 처리하고 싶다면 다음의 코드를 사용
- 반대로 응답 결과로 JSON을 요구하는 요청을 처리하고 싶다면, 즉 Accept 요청 헤더에 application/json이 포함된 경우만 처리하고 싶다면, producess 속성을 사용하면 됨
출처
댓글
댓글 쓰기