-
Http method와 요청 매핑Spring/Spring MVC 2020. 6. 2. 01:38
- 해당 핸들러는 RequestMapping을 통해 핸들러 역할을 하게 된다.
- 이때 메소드를 따로 명시하지 않으면 모든 메서드 요청을 다 허용하게 된다.
- Get만 처리하고 싶다면 method에다 허용하고 싶은 RequestMethod를 설정해주면 된다.
- 이제 Post요청을 보내보면 405로 Method NotAllowed 가 되는 것을 알 수 있다.
- Get과 Post를 둘다 허용한다면 다음과 같이 할 수 있다.
Http 메소드에 대해 알아보자.
Get
- 클라이언트가 서버에 있는 리소스를 요청할 때 사용한다
- Get요청에 응답은 캐싱이 가능하다. 캐시와 관련된 헤더를 응답에 싣고 if-not-modified를 통해 조건 Get 가능하다.
- 브라우저에 히스토리에 남게 된다.
- 민감한 데이터를 보낼 때는 URL에 다 표기가 되기에 주의해야 한다.
- 멱등 ( Idempotent )
( 동일한 get 요청은 동일한 응답을 return 한다 )
Post
- 클라이언트가 서버의 리소스를 수정하거나 새로 만들 때 사용한다.
- 서버에 보내는 데이터를 Post 요청 본문에 담는다.
- 캐시 할 수 없다.
- 본문에 담기 때문에 데이터 길이 제한이 없다.
- 멱등 ( Idempotent) 이 아니다.
(같은 Post 요청은 매번 달라질 수 있다. )
Post와 Put의 차이?
Post
- 데이터를 처리할 수 있는 리소스를 가리킨다
- Idempotent 하지 않을 수도 있다.
Put
- URL가 리소스 자체를 가리킨다.
- 따라서 Idempotent 하다.
Patch
- Put과의 차이점만 실어서 보내게 된다.
- 리소스의 일부 데이터만 수정하고 싶은 경우 사용하게 된다.
하나의 요청만 허락하고 싶은 경우?
- 다음과 같이 @GetMapping @PostMapping 등을 통해 가능하다.
- 또는 @RequestMapping을 클래스 레벨에 설정해서
- 이 컨트롤러 안에 모든 핸들러의 Get 요청 응답만 처리하도록 할 수 있다.
'Spring > Spring MVC' 카테고리의 다른 글
핸들러와 Media Type (0) 2020.06.04 핸들러 URI 패턴 (0) 2020.06.02 WebMvcConfigurer 살펴보기 (0) 2020.05.31 Json 컨버터 (0) 2020.05.28 HTTP 메세지 컨버터와 String (0) 2020.05.28