현재의 웹에서 클라이언트와 서버가 통신할 때 사용하는 주요 수단인 HTTP 메소드.
각각의 메서드는 어떤 목적의 요청인지를 명확히 나타내고,
RESTful API 설계에서도 핵심적인 역할을 합니다.그러나, 각 메소드들이 정확히 어떤 역할과 특징을 가지고 있는지 확실하게 알고
사용하고 있는 걸까요? 본 글에서는 각 메소드들의 역할과 특징을
명확하게 짚고 넘어가고 싶습니다.
서버에서 정보를 요청합니다.
서버의 상태가 요청의 영향을 받지 않습니다.
요청 본문에 데이터를 담지 않으며, 리소스를 생성하지 않습니다.
요청 URL에 파라미터(Query String) 포함이 가능합니다.
캐싱이 가능하여 속도가 상대적으로 빠를 수 있습니다.
브라우저 히스토리에 기록이 남습니다.
서버에 데이터를 전달해 새 리소스를 생성합니다.
회원가입, 게시글 등록 등 "만들기" 에 사용됩니다.
요청 본문(Body)에 데이터를 포함합니다.
데이터가 URL에 노출되지 않아 보안상 상대적으로 유리합니다.
같은 요청 여러 번 전송 시 중복 생성 가능성이 있습니다.
기존 자원의 "전체"를 수정합니다.
리소스가 없으면 새로 생성(서버 설정에 따라 다름)하나,
있을 경우 해당 메소드로 제공된 정보로 완전히 바꿉니다.
테이블의 모든 컬럼을 제공된 값으로만 변경합니다.
제공되지 않은 컬럼의 값은 휘발됩니다.
클라이언트가 전체 정보를 보내야 합니다.(누락되면 빈칸이 되어버림)
같은 요청을 여러 번 보내도 결과가 동일합니다.
특정 리소스의 특정 부분(일부분)을 수정합니다.
수정할 부분의 정보만 보내면 됩니다.
특정 리소스를 서버에서 제거합니다.
요청 시 바디는 일반적으로 사용하지 않습니다.
삭제 성공 시 보통 200(OK), 204(No Content) 응답
여러 번 호출해도 결과가 동일합니다.
각 메소드는 그런 요청이라는 것을 알려주는 것이라 지키지 않으면 혼란스러울 뿐,
해당 메소드의 결과가 강제되는 것은 아닙니다.따라서, 결국 제작자나 협업자끼리 해당 메소드들에 대해서 어떻게 이해하고
협의했냐에 따라서 사용되면 되는 것입니다!