HTTP 메서드는 클라이언트가 서버에 뭔가를 요청을 할때 기대하는 행동이라고 보면된다!
GET : 리소스 조회
POST : 요청 데이터 처리 , 주로 등록에 사용
PUT : 리소스를 대체 , 해당 리소스가 없으면 생성
[ 파일을 폴더에 넣는것과 비슷하다 파일이 없으면 파일이 새로 생기고 있으면 덮어버린다 ]
PATCH : 리소스 부분 변경 [ 회원의 이름을 바꾸거나 특정 필드값을 바꿀때 ]
DELETE : 리소스 삭제
HEAD : GET과 동일하지만 메시지 부분을 제외하고 , 상태 줄과 헤더만 반환
OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 ( 주로 CROS에서 사용 )
CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 선정 ( 거의 사용하지 않음 )
TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 ( 거의 사용하지 않음 )
리소스를 클라이언트가 전달한다./members 라는곳으로 POST를 사용해서
/members라고 오면 서버입장에서는 클라이언트가 /members 로 데이터를 보내면 저장하거나 내부적인 프로세스에 사용한다등 서로 약속을 미리 정의한다.
위예제에서는 신규등록이라고 가정한다.
서버가 데이터를 받아서 신규 등록 처리를 하고 신규 리소스 식별자를 생성한다
응답데이터를 보낸다 .신규로 생성되면 보통 201 Created로 보내는데 200으로 보내도 상관없다.
201로 보내면 Location 즉 경로를 보내준다 .
POST 요청데이터를 어떻게 처리한다는 뜻일까? 예시
HTML 양식에 입력 된 필드와 같은 데이터 블록을 데이터 처리 프로세스에 제공
게시판 , 뉴스 그룹 , 메일링 리스트, 블로그 또는 유사한 기사 그룹에 메시지 게시
서버가 아직 식별하지 않은 새 리소스 생성
기존 자원에 데이터 추가
POST 정리
POST는 모든것이 가능하다 메시지를 내부에 담아서 보내는 모든것 ! 하지만 조회할때는 GET을 사용하는게 유리하다 GET으로 오면 서버는 약속된 캐싱을 한다 하지만 POST로 오면 캐싱을 하는게 어렵다 !
그래서 조회데이터는 최대한 GET을 사용하고 그 외 데이터가 변경되거나 뭔가 프로세스가 진행되거나 정말 어쩔수 없는 경우에 POST를 사용하자!!