Spring/Spring MVC

Http method와 요청 매핑

100win10 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 요청 응답만 처리하도록 할 수 있다.