김영한님의 인프런 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 참고했습니다.
요청 메시지 전달
응답 메시지 전달
POST는 크게 다음과 같은 상황에서 사용한다.
POST는 굉장히 범용성이 넓다. POST 요청이 오면 요청 데이터를 어떻게 처리할지 리소스마다 따로 정해야 한다. 클라이언트는 등록될 리소스의 URI를 모르며 서버가 새로 등록된 리소스 URL을 생성해준다.
요청 메시지 전달
여기서는 클라이언트가 서버로 POST /members를 보내면 서버가 신규 리소스 식별자(/members/100)에 username과 age를 등록하기로 약속했다.
응답 메시지 전달
서버는 신규 리소스 /members/100를 생성하고 여기에 username과 age를 등록하고 응답메시지를 반환해 준다.
리소스를 덮어 버린다. 다시 말해서 리소스가 있으면 대체, 리소스가 없으면 생성한다.
클라이언트가 리소스 위치를 알고 URI 지정해 줘야 한다.
요청 메시지 전달
응답 메시지 전달
요청 메시지 전달
응답 메시지 전달
요청 메시지 전달
응답 메시지 전달
POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않아서 실제로는 GET, HEAD 정도만 캐시로 사용
클라이언트에서 서버로 데이터 전송은 크게 4가지 경우가 있다.
쿼리 파라미터 미사용
쿼리 파라미터 사용
• 주로 검색, 게시판 목록에서 정렬 필터(검색어)
• 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
• 조회는 GET 사용
• GET은 쿼리 파라미터 사용해서 데이터를 전달
GET은 message body를 써서 데이터를 전송할 순 있지만 아직 보편화되어 있지 않아서 권장하지 않음.
POST 전송-저장
HTML Form은 GET, POST 전송만 지원한다. GET는 message body를 사용 안 하므로 쿼리 파라미터를 통해 전송-저장에 쓸 수는 있지만 일반적으로 GET은 조회에만 사용한다.
GET 전송-조회
multipart/form-data
다른 종류의 여러 파일과 폼의 내용을 함께 전송 가능하다.