HTTP Methods(HTTP-Verbs) - GET, POST, PUT, PATCH, DELETE

HTTP Methods 는 HTTP Verbs 라고도 불리는데, HTTP 신호의 타입들을 분류해 놓은 것입니다.
HTTP Methods 는 종류가 광장히 많지만 그 중에 자주 쓰이는 GET, POST, PUT, PATCH, DELETE를 알아봅시다.

아래 내용에서 resource는 웝페이지(html), binary data(그림파일, 소리파일 등), db data(json/xml/혹은 html로 render된 data)를 뜻합니다.

GET

서버에게 resource를 보내달라고 요청합니다. 서버(혹은 DB)의 resource는 클라이언트로 전달만 될 뿐 변경되지 않습니다.

예를 들어 웹브라우저에http://example.com/exmaple.png를 입력하면 해당 그림 파일이 표시되고, http://example.com/something을 입력하면 서버가 해당 route에 표시되어야 하는 페이지를 찾아 보여줍니다. 참고로 웹브라우저 주소창에 주소를 입력하면 이 신호는 항상 get으로 요청됩니다.

POST

서버에게 resource를 보내면서 생성해 달라고 요청합니다. 예를들어 회원가입을 하면 DB에 새로운 회원정보가 등록되고, 사진을 업로드 하면 그 사진이 웹사이트에 등록됩니다.

PUT

서버에게 resource의 업데이트 하거나 resource가 없다면 새로운 resource를 생성해 달라고 요청합니다. 회원정보 수정 등에 사용됩니다.

PUT은 PATCH와 비교해서 전체 데이터를 교체하는 차이점이 있습니다.

가령 user data의 구조가 user._id, user.firstName, user.lastName, user.age라고 한다면, 회원정보 수정시 PUT은 _id를 찾아 age만 업데이트하더라도 항상 모든 필드값을 가져와서 모든 필드를 항상 새로운 값으로 교체합니다.

PATCH

서버에게resource의 업데이트를 요청합니다. 회원정보 수정 등에 사용됩니다.

PATCH는 PUT과 비교해서 부분 데이터를 업데이트하는 차이점이 있습니다.

가령 user data의 구조가 user._id, user.firstName, user.lastName, user.age라고 한다면, 회원정보 수정시 PATCH는 _id를 찾아 age만 업데이트할때 _id와 age만 받아와서해당 부분을 업데이트 합니다.

DELETE

서버에게 resource의 삭제를 요청합니다.

댓글

J
Jonghee Cheon 2016.09.24
좋은 글 감사합니다 ~ ^^
I
Ian H 2016.09.26
@Jonghee Cheon,
감사합니다^^
g
genie 2017.11.19
진짜 설명 너무너무 좋네요 감사합니다. 
I
Ian H 2017.11.20
@genie,
감사합니다^^
김종하 2017.12.08
어쩌다 구글링해서 찾게 되었는데, 정말 잘 보고 있습니다!!
근데 PUT 이랑 PATCH랑 헷갈린게, PATCH가 그럼 훨씬 효율적인거 아니에요?
어떨때 PUT을 쓰고, 어떨때 PATCH를 쓰는지 궁금합니다.
I
Ian H 2017.12.08
@김종하,
PUT는 대상의 전체를 수정하고, PATCH는 대상의 일부분을 수정합니다. 사실 PATCH는 PATCH를 만든 사람의 의도대로 사용하려면 너무 복잡하기 때문에 요즘은 대부분 PUT으로 처리합니다. 회원 정보 수정 form을 예로 들면 일부분만 수정하더라도 submit하면 일단 form의 모든 정보가 전송되잖아요? 그럼 PUT이 되는 것이죠.
DB를 부분적으로 수정하기 때문에 효율적이라고 말씀하시는 건가요? 사실 이정도 차이로 속도의 차이를 느끼기는 어렵습니다. 
김종하 2017.12.08
@Ian H,
상세한 답변 감사합니다. 요즘 효율성을 배우고 있어서 그게 눈에 걸렸습니다..ㅋㅋ
쵸비 2017.12.13
잘 보고있습니다 감사합니다~
I
Ian H 2017.12.13
@쵸비,
질문 있으시면 알려주세요~~~
이수혁 2018.07.20
굿굿굿 감사합니다.
I
Ian H 2018.07.23
@이수혁,
감사합니다^^
반팔 2018.09.18
좋은 정보 감사합니다. 많은 도움 되고 있습니다.
I
Ian H 2018.09.18
@반팔,
도움이 되었으면 좋겠습니다. 화이팅^^
Y
Yongje Seo 2018.11.15
내용 좋네요 잘배우겠습니다 감사합니다
I
Ian H 2018.11.15
@Yongje Seo,
안녕하세요. 방문해 주셔서 감사합니다^^
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP