본문 바로가기
개발/Spring

@PostMapping, @PutMapping, @GetMapping

by lewns2 2021. 3. 15.

1. @PostMapping

@PostMapping 어노테이션이있는 메소드는 주어진 URI 표현식과 일치하는 HTTP POST 요청을 처리합니다.

 

HTTP POST?

- HTTP POST 메서드는 서버로 데이터를 전송한다.

- POST 요청은 보통 HTML 양식을 통해 서버에 전송하며, 서버에 변경사항을 만든다.

 

▶ 주요 기능 (추가/등록)

  • 기존 리소스에 주석달기
  • 게시판, 뉴스, 그룹, 메일링 리스트나 이와 유사한 시스템에 글 올리기
  • 회원가입 모달로 새로운 사용자 추가하기
  • 양식 전송 결과 등 데이터 블록을 데이터 처리 프로세스에 보내기
  • 이어붙이기 연산을 통한 데이터베이스 확장

사용법

@PostMapping("/post")
public @ResponseBody ResponseEntity<String> post() {
    return new ResponseEntity<String>("POST Response", HttpStatus.OK);
}

 

2. @PutMapping

@PutMapping 어노테이션이있는 메소드는 주어진 URI 표현식과 일치하는 HTTP PUT 요청을 처리합니다.

 

HTTP PUT?

- HTTP PUT 메서드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체함.

 

▶ 주요 기능 (수정)

 

사용법

@PutMapping("/put")
public @ResponseBody ResponseEntity<String> put() {
    return new ResponseEntity<String>("PUT Response", HttpStatus.OK);
}

 

 

PUT과 POST의 차이? 멱등성과 리소스 결정권

 

멱등성

어떤 대상에 같은 연산을 여러번 적용해도 결과가 달라지지 않는 성질

.

 

POST 메서드를 반복 수행할 경우, 매번 데이터가 등록되어 멱등성을 가지지 않습니다.

반면, PUT 메서드는 반복 수행하더라도, 같은 데이터를 바라보기에 멱등성을 가지게 됩니다. 

 

리소스 결정권

URI를 결정하는 권한이 누구한테 있는지를 말합니다.

- URI는 인터넷상의 리소스 “자원 자체”를 식별하는 고유한 문자열 시퀀스입니다. 

 

POST의 리소스 결정권은 서버에서 가지게 됩니다. (클라이언트는 리소스의 위치를 모릅니다. 그러므로 서버에서 이를 처리합니다.)

PUT의 리소스 결정권은 클라이언트에서 가지게 됩니다. ("OO번 글을 변경 해줘", 변경 대상의 리소스 위치를 클라이언트가 알고있습니다.)

 

 

PUT은 멱등성을 가짐. (여러 번 호출할 경우, 클라이언트가 받는 응답은 동일)

 

  POST PUT
요청에 본문 존재 O O
성공 응답에 본문 존재 O X
안전함 X X
멱등성 X O
캐시 가능 △(신선도 정보 포함 시 O) X
HTML 양식에서 사용 가능 O X

 

3. @GetMapping

@GetMapping 어노테이션이있는 메소드는 주어진 URI 표현식과 일치하는 HTTP GET 요청을 처리합니다.

 

HTTP GET?

- HTTP POST 메서드는 특정한 리소스를 가져오도록 요청한다.

- GET 요청은 데이터를 가져올 때만 사용해야 한다.

 

▶ 주요 기능 (조회/요청)

 

사용법

@GetMapping("/get")
public @ResponseBody ResponseEntity<String> get() {
    return new ResponseEntity<String>("GET Response", HttpStatus.OK);
}
@GetMapping("/get/{id}")
public @ResponseBody ResponseEntity<String>
  getById(@PathVariable String id) {
    return new ResponseEntity<String>("GET Response : " 
      + id, HttpStatus.OK);
}

 

 

참고.

www.baeldung.com/spring-new-requestmapping-shortcuts

developer.mozilla.org/ko/docs/Web/HTTP/Methods/PUT

 

728x90
반응형