HTTP 메서드 종류별 특징
GET
리소스 조회
- 서버에 전달하고 싶은 데이터는 query (쿼리 파라미터, 쿼리 스트링) 을 통해 전달함
- 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음.[최근 스펙에서는 허용은 되어있음]
@GetMapping("/get/test")
public void getTest(@RequestBody MemberData memberData){
System.out.println(memberData.getId());
System.out.println(memberData.getPwd());
}
curl --location --request GET 'http://localhost/get/test' \
--header 'Content-Type: application/json' \
--data-raw '{
"id":"1234",
"pwd":"test"
}'
위에 보이는 Controller 에 GET 요청으로 curl 요청할 경우 Console 에 id:1234 pwd:test 가 정상적으로 메핑되어 들어온다.
하지만 GET 요청으로 데이터를 보낸후 어떤 처리를 서버에 요청하는것은 REST 한 설계와 아직은 맞지 않는듯하다.
POST 와 GET 두 요청다 사실 서버에 조회용으로써 사용이 가능하다 하지만 GET 으로 요청을하였을 때의 장점은 서버간의 규약에 있어 A서버는 하나의 GET 요청이 들어올 경우 캐싱을 하는등과 같은 규약이 있을 수 있다. 모든 요청을 중구 난방으로 POST 로 요청이 들어올 경우 POST 요청을 서버에서 성능을 높이기 위한 어떠한 처리를 하기 애매해질 수 있다.
POST
바디에 담긴 데이터를 등록 또는 어떤 처리를 요청할때 사용함.
- 서버는 요청 데이터를 처리, FormData 회원가입, 주문생성, 댓글, 글쓰기, 기존 데이터에 신규 자원을 추가하는 일련의 과정을 처리함.
- 반드시 새로운 리소스가 생성(저장) 한다 보다 데이터를 처리하는것에 초점이 있음
- 주문 데이터를 여타 다른 벤더사에 REST 요청 처리
- 데이터 속성에 따라 상태값을 변경할 수 도있음
- 쿼리 파라미터로 넘기기 애매한경우 POST 를 사용할 수 도있다.
PUT
리소스를 대체, 해당 리소스가 없을 경우 생성 있으면 대체
- A 라는 맴버가 있을때 A 가 유입되었을경우 없으면 넣고 있으면 유입된 데이터로 완전히 대체해버림
- 클라이언트가 리소스의 위치를 정확히 알고 지정함
- url -> /members/100 , order/257892 일 경우 100번 회원에 대한 자원대체 257829 번에 대한 주문건에대한 대체 를 요청함
클라이언트는 100번 자원이 무엇인지 257892 주문이 무엇인지를 알고있는 상태로 서버에 요청을 보냄
이것이 POST 와 PUT 의 차이중 하나이다.
- url -> /members/100 , order/257892 일 경우 100번 회원에 대한 자원대체 257829 번에 대한 주문건에대한 대체 를 요청함
- PUT 요청일경우 하나의 객체에 대해 한가지 프로퍼티만 수정할 수 없다.
위 요청같이 들어온 데이터 그대로 기존 데이터를 완전이 대체함.
PATCH
리소스 부분 변경
- PUT 요청에서 데에터를 완전히 대체하지 않으면서 업데이트하게됨.
- 하나의 객체에 대하여 특정 프로퍼티에 대한 업데이트가 가능함.
DELETE
리소스 삭제
- 특정 리소스를 제거함.
Author And Source
이 문제에 관하여(HTTP 메서드 종류별 특징), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dkajffkem/HTTP-메서드-종류별-특징저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)