오늘은 HTTP 메소드 종류에 대해서 포스팅 하려고 한다. 백엔드 개발자라면 당연히 기본적으로 알아야하며, 프론트 엔드 개발자(웹, 안드로이드, ios)도 꼭 알아야 한다.
HTTP 메소드에는 주요 메소드와 기타 메소드가 있다.
1. HTTP 주요 메소드
- GET : 리소스 조회
- POST : 요청 데이터 처리, 주로 등록에 사용
- PUT : 리소스를 대체, 해당 리소스가 없으면 생성
- PATCH : 리소스 부분 변경
- DELETE : 리소스 삭제
2. HTTP 기타 메소드
- HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
- OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메소드)을 설명(주로 CORS에서 사용)
- CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
- TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
HTTP의 주요 메소드에 대해서만 자세히 알아보도록 하겠다.
1.1 GET
- 리소스 조회
- 서버에 전달하고 싶은 데이터는 query parameter를 통해서 전달
- 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하는 곳이 많지 않아서 권장하지 않음
1.2 POST
- 새 리소스 생성(등록) - 서버가 아직 식별하지 않은 새 리소스 생성
- 요청 데이터 처리 - 프로세스 처리(비니지스 서비스) ex) 주문, 배달, 결제
- 다른 메소드로 처리하기 에매한 경우
+ 해당 리소스 URI에 POST 요청이 오면 요청 데이터를 어떻게 처리할지 리소스마다 따로 정의해야 함
1.3 PUT
PUT은 메소드는 리소스를 대체한다. 특성상 경우에 따라서 주의해서 사용해야 한다.
리소스가 있는 경우 -> 리소스 자원을 완전히 대체
리소스가 없는 경우 -> 신규 리소스 생성
리소스가 있지만 -> 완전히 대체
+ PUT 메소드는 존재하는 리소스가 있다면 대체하거나 덮어써버리고, 없다면 생성한다. 따라서 윈도우의 파일저장 시스템과 유사하다고 볼 수 있다.
1.4 PATCH
PATCH 메소드는 리소스를 부분 변경한다.
리소스가 있는경우 -> age만 부분 변경 (PUT과의 차이가 보이는가?)
1.5 DELETE
해당 path에 리소스 존재 -> 완전히 제거
전체적으로 개발에서 GET, POST방식 이외에는 보안이 취약해서 사용을 권장하지 않은 글들이 많았다.
GET,POST 이외에 보안이 취약하다는 글: http://coashanee5.blogspot.com/2017/03/http.html?m=1