어느 비전공자의 개발일지

HTTL 인터넷 네트워크 [ 4 ] PUT,PATCH,POST,GET,DELETE 본문

백엔드 개발자/Java[Spring]

HTTL 인터넷 네트워크 [ 4 ] PUT,PATCH,POST,GET,DELETE

vndn629 2023. 7. 26. 10:00

* HTTP API를 만들어보자 ( 목록조회,등록,수정,삭제 )

URI 가장 중요한점은 “ 리소스식별 “이다. “ 리소스 “ 와 해당 리소스를 대상으로 하는 “ 행위 “ 를 분리

 

* HTTP 메서드 ( GET, POST )

-------------------------------------

I GET : 리소스조회 I HEAD : GET 과 동일하지만, 메시지 부분을 제외하고, 상태 줄과 헤더만 반환

I POST : 처리, 등록 I

I PUT : 리소스대체, 리소스 없으면 생성 I

I PATCH : 리소스 부분 변경 I

I DELETE : 리소스 삭제 I

---------------------------------------

GET /search?q=hello&hI=ko HTTP/1.1

: 리소스조회, 서버에 전달하고 싶은 데이터를 query를 통해 전달 ( 바디에 내용을 전달할 수 있지만 지원하지 않는 곳이 많아서 권장하지 않음 )

POST ( 1. 새 리소스 생성 , 2. 요청 데이터 처리 , 3. 다른 메서드로처리하기 애매한 경우 )

: 메시지 바디를 통해 서버로 요청 데이터 전달 / 처리한다.

예 ) HTML FORM에 입력한 정보로 회원가입,주문, 게시판글쓰기, 댓글 달기, 신규 주문 생성 ,한 문서 끝에 내용 추가하기 등.

: POST는 모든걸 할수 있지만, 조회데이터는 최대한 GET을 쓴다.

 

* HTTP 메서드 ( PUT, PATCH , DELETE )

PUT ? 리소스를 대체 하는 것 ( 덮어버림 )

중요 : POST와 PUT의 다른점은, PUT은 정확한 리소스위치를 알고 URI를 지정한다는 것, 리소스를 완전히 대체 한다는 것,

DELETE ( 리소스 제거 )

 

* HTTP 메서드의 속성

안전(Safe Methods)

호출해도 리소스를 변경하지 않는다. ( 호출을 했을 때 변경이 안되는걸 안전하다고 한다 )

 

멱등(Idempotent Methods) 한 번 호출하든 두번 호출하면 100번 호출하든 결과가 같다.

GET : 한 번 조회하든, 두 번 조회하든 같은 결과가 조회 된다. -------------------------------- 멱등 아님 POST ---------------------------

PUT : 한 번 대체 하든 , 두번 대체하든 같은 결과가 조회 된다. I POST : 멱등이 아니다! 결제가 한번될 것이 두번 되고 백번 된다. I

DELETE : 한 번 삭제 하든, 두번 삭제하든 삭제된 결과는 같다. -------------------------------- 멱등 아님 POST ---------------------------

활용 : 자동 복구 메커니즘 ( 삭제를 했을시 삭제가 되었는지 몰라서 자동으로 삭제처리를 한번더 실행 한다. )

Q.: 재요청 중간에 다른 곳 에서 리소소를 PUT으로 변경 해버리면 그냥 변경된 걸로 재요청됨. ( 멱등은 중간에 리소스가 변경 되는 것 까지 고려하지 않는다.)

 

 

캐시가능(Cacheable Methods)

GET,HEAD,POST,PATCH 캐시 가능이지만, 실제로는 GET,HEAD 정도만 캐시로 사용한다.

POST,PATCH는 본문 내용까지 캐시 키로 고려해야되는데 구현이 쉽지않음

반응형