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

HTTP는 컴퓨터와 서버간의 네트워크 통신을 하기 위한 규약(프로토콜)중의 하나입니다. 웹 브라우저에서 사용하여 굉장히 유명해졌고, 요즘은 그 용도가 더 다양해지고 있습니다.

HTTP로 데이터가 서버로 전달될 때, method(Verb 라고도 불림)라는 속성을 반드시 가지게 되는데, method는 데이터를 보내는 목적을 표시해주는 역할을 하고, 같은 데이터가 전달되더라도 method가 다르면 데이터를 전달받은 서버는 method에 따라 데이터를 다르게 처리합니다.

HTTP method는 종류가 광장히 많지만 이 게시물에서는 그 중에 자주 쓰이는 GET, POST, PUT, 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 을 입력하면 서버가 해당 페이지를 찾아 보여줍니다. 참고로 웹브라우저 주소창에 주소를 입력하는 행위는 항상 get인식됩니다.

POST

서버에게 resource를 보내면서 해당 resource를 DB혹은 서버에 저장해달라고 요청할 때 사용합니다. 예를들어 회원가입을 하면 DB에 새로운 회원정보가 등록되고, 사진을 업로드 하면 그 사진이 웹사이트에 등록되는데 이러한 요청은 post를 통해 이루어 집니다.

PUT

서버에게 resource의 업데이트를 요청할 때 사용됩니다. 회원정보 수정, 작성된 게시물의 수정 등의 요청에 사용됩니다.

DELETE

DB, 서버에 존재하는 resource의 삭제를 요청할 때 사용됩니다.

참고 사항

서버가 HTTP methods를 어떤식으로 처리할지는 전적으로 서버 프로그래머에 달려있습니다. 즉 POST를 받으면 데이터를 지우고, DELETE을 받으면 데이터를 생성하는 서버를 만들 수도 있습니다. 이는 HTTP methods들이 시스템상의 제약으로 각각의 기능이 나누어 지는 것이 아니라, 단지 사람의 이해를 돕기 위해 구별하기 위한 용도이기 때문입니다. 실제로 많은 서버들이 GET(정보 읽기)과 POST(그 외의 모든 처리)로만 요청을 처리하기도 합니다.

요즘은 각각 기능에 맞게 서버를 프로그래밍하는 추세이므로 여러분들은 알맞은 method를 사용하시기 바랍니다.

**이 게시물은 2019년 6월에 수정되었습니다. 전체적인 내용 수정과 함께 PATCH 항목을 지웠습니다. PATCH는 PUT과 마찬가지로 서버의 resource를 수정하는데 사용되지만, 사용법이 까다롭고 논란이 있기 때문에 많은 사람들이 사용하지 않습니다. MEAN Stack 강의 시리즈에서도 PATCH는 사용하지 않습니다. 오히려 혼란을 주는 것 같아 해당 내용을 삭제하였습니다.

댓글

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