Http Method
。HTTP Client가HTTP Server에게 특정작업을 수행할 것을 명령하는 Method.
。GET을 제외한 나머지HTTP Method는DB에 직접적으로 영향을 주므로CSRF Protection에 의한 제한이 존재.
。GET/POST/PUT/DELETE/HEAD/OPTIONS/PATCH/CONNECT가 존재
멱등성( Idempotence )
。여러번 수행해도 결과가 동일함을 의미
▶서버에호출을 수행하더라도데이터가 변형되지않음을 의미
멱등성을 보장하는HTTP Method
GET:
。GET Request에 따른사이드 이펙트가 없어서버 자원에는 변화가 없으므로.
PUT:
。해당URI의전체 자원을 동일한 내용으로Update하므로 여러번 실행해도 결과는 동일
DELETE:
。해당URI의 첫호출로자원이 삭제되고, 이후호출은삭제된 상태를 반복하므로 결과 동일
멱등성을 보장하지않는HTTP Method
POST:
。서버 자원을 추가하거나 수정하여서버 상태를 수정하므로 같은요청이 전송 시 항상 동일한결과물의 도출을 보장하지 않음
PATCH:
。해당URI의자원을 부분수정하므로 동일 요청을 여러번 전송 시누적변경이 발생할 수 있음.
주요
CRUD 메서드
。POST,GET,PUT,PATCH,DELETE
HTTP 1.0 : GET , POST
HTTP 1.1 : PUT , PATCH , DELETE
POST / PUT / PATCH:
。HTTP Message Body에Form data(JSON등 )을 적재하여Server에 전달
▶URI의querystring을 사용하는GET보다 정보를 많이, 안전하게 숨겨서 전송이 가능
。해당HTTP Method들의 기능이 특정 용도에 제한되어있지 않으므로POST만을 이용해read , update , delete가 모두 수행가능하지만 해당Http Request의 의도를 쉽게 파악하기 위해 목적에 따라 명시적으로 구분해서 사용.
▶서버 자원 삭제시POST /users/1/delete가 아닌DELETE /users/1로 표기.
POST: CreatePOST /user body : { 키1 : 값1 , ... } Content-Type : "application/json"。
서버에Resource를 추가 및 작성 시 활용하는Method
( ex: 새로운 게시물을 생성 시 )
。HTTP Request Body에Form Data(XML,JSON등 )을 추가하여URI에 해당하는Server API를 통해 추가
▶POST가 성공적으로 수행되어자원이 생성된 경우Http Status Code : 201를 응답
。멱등성을보장하지 않는다.
GET: Read
GET /user/1/?name=wjdtn
▶데이터 조회가 목적이므로Request Body와Content-Type이 비워져있음
。서버에서Resource를읽거나검색시 활용하는Method
( ex: 사용자가 게시물의 상세 정보를 얻을 때 )
。HTTP Request Body를 사용할 수 없으나URI의query string을 통해 적은양의input을Server에 전달가능
▶ 방대한 양의input을 전송 시 또는 민감정보를 전송 시POST를 통해HTTP Message Body를 이용하여 전송
。GET이 성공적으로 수행 시HTTP Response Body에 요청한데이터를 포함한JSON과 함께HTTP Status code : 200을 반환
▶ 실패한 경우HTTP Status code : 400 , 404를 반환
。멱등성 보장
。HTTP에서 지원하는웹 캐시를 통해캐싱을 지원
▶ 동일데이터를 다시GET Request시서버가 아닌프록시 서버에서응답하여 조회속도가 빨라짐
Web Cache
PUT / PATCH: Update
。서버의자원을Update시 활용하는Method
▶ 주로 수정시에는PUT을 사용
( ex: 사용자, 게시물 수정 시 )
PUT:PUT /user/1 body : { 키1 : 값1 , ... } Content-Type : "application/json"。
서버 자원을 일괄적으로전체수정시 사용하는Http Method
▶서버자원에수정을 시도 시자원이 없는 경우자원을 추가
。멱등성 보장
PATCH:
。서버 자원의일부분만 부분 수정시 사용하는Http Method
。수정하는 사항이 많아지는 만큼URI상 수정사항의Endpoint가 많아지므로PATCH보다는 일괄적으로 수정하는PUT을 많이 사용
。멱등성을보장하지 않는다.
Delete: Delete
DELETE /user/1
▶데이터 삭제가 목적이므로Request Body와Content-Type이 비워져있음
。서버 자원을 삭제하도록 명령하는Method
。멱등성 보장
OPTIONS
。Server의 특정자원에서접근이 허용되는HTTP Method를 물어보는 용도의메서드
▶ 실제Http Request전Preflight Request에 포함되어 해당resource URL에서 사용할 수 있는HTTP Method가 무엇인지 묻는 용도로 활용
HEAD
。서버 자원의헤더(메타데이터)를 획득하는메서드
CONNECT
。프록시동작의터널접속을 변경