본문 바로가기
Spring/spring mvc

요청 매핑

by 킹차니 2021. 6. 28.
김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C

 

 

 

 

요청 매핑

 

MappingController

매핑 정보

@RestController

@Controller 는 반환 값이 String이면 뷰 이름으로 인식됩니다. 그래서 뷰를 찾고 뷰가 랜더링 됩니다.

 @RestController 는 반환 값으로 를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. 따라서 실행 결과로 ok 메세지를 받을 수 있습니다. @ResponseBody 와 관련이 있는데, 뒤에서 더 자세히 설명합니다.

 

@RequestMapping("/hello-basic")
 /hello-basic
URL 호출이 오면 이 메서드가 실행되도록 매핑합니다.

 대부분의 속성을 배열[] 로 제공하므로 다중 설정이 가능합니다. {"/hello-basic", "/hello-go"} 

 

 

둘다 허용

다음 두가지 요청은 다른 URL이지만, 스프링은 다음 URL 요청들을 같은 요청으로 매핑합니다.

  매핑: /hello-basic
 URL 요청: /hello-basic , /hello-basic/   --> 이둘은 엄연히 다르지만 스프링이 같은 것으로 보고 처리해줍니다.

 

HTTP 메서드
@RequestMapping method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출됩니다.
모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE

 

 

MappingController의 helloBasic에 매핑된 url 요청을 하면 화면에 "ok"가 출력됩니다.

method = RequestMapping.GET없다면 POST, PUT, DELETE로 보내도 ok지만 위에 작성한 것처럼

method = RequestMapping.GET넣어주면 GET외의 메소드로 보낼 경우 아래와 같은 에러를 json에 담아서 줍니다.

 

 

 

 

@RequestMapping을 아래와 같이 @GetMapping으로 바꾸는 것이 더 직관적이고 좋습니다.

 


 

 

PathVariable(경로 변수) 사용

 

 

PathVariable다중 값도 처리 가능합니다.

 

 


 

 

특정 파라미터 조건 매핑

잘 사용하진 않지만 특정 파라미터가 있어야만 실행되게 할 수 있습니다.

즉 요청이 http://localhost:8080/mapping-param?mode=debug 으로 들어와야만 합니다.

만약 http://localhost:8080/mapping-param 이렇게 요청이 오면 404에러를 띄웁니다

성공하는 경우
실패하는 경우

 

 


 

 

특정 헤더 조건 매핑

headers = "mode=debug"에 써있는 것처럼

header에 위의 값을 넣지 않으면 에러를 띄웁니다.

요렇게 header에 값을 넣어야 ok응답을 받을 수 있습니다.

 

 


 

미디어 타입 조건 매핑 - HTTP 요청 Content-Type, Consume

Post메서드로 날아오고, body의 데이터는 json이어야 합니다.

 


 

미디어 타입 조건 매핑 - HTTP 요청 Accept, produce

Accept는 "나는 요 타입으로만 응답 받을거야!"라고 클라이언트에서 보내는 정보입니다. 

Produce는 해당 매핑에 대한 "응답은 이런 타입으로 보낼꺼야!" 라고 서버의 입장에서 말하는 것입니다.

위의 코드를 보면 (value = "/mapping-prodece", produces = "text/html") 이라고 되어있습니다.

즉 해당 매핑에 대한 응답으로 text/html을 보낼 것이라는 것입니다.

근데 /mapping-prodece으로 날라온 요청의 Accept가 application/json이라면???

요청은 json을 원하는데, 응답은 text/html이라면 이는 서로 요청과 응답을 주고 받을 수 없으니 서버는 에러를 발생시킵니다.

406에러가 난다!

 

하지만 Accept을 "text/html"으로 보내면 당연히 응답을 받을 수 있습니다.

 

'Spring > spring mvc' 카테고리의 다른 글

HTTP 요청 헤더 정보 조회  (0) 2021.06.28
요청 매핑 API만들기  (0) 2021.06.28
23 로깅  (0) 2021.06.27
스프링 MVC실용적 방식 (modelview를 스프링에게 맡기기)  (0) 2021.06.27
스프링 MVC 시작하기  (0) 2021.06.27