클라이언트 -> 서버 데이터 전송
1) 방식 2가지
- 쿼리 파라미터를 통한 데이터 전송
GET 을 사용함. - 메시지 Body를 통한 데이터 전송
POST, PUT, PATCH 사용
2) 상황 4가지
- 정적 데이터 조회
이미지, 정적 텍스트 문서
조회는 GET을 사용.
정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능하다. - 동적 데이터 조회
주로 검색, 게시판 목록에서 정렬 필터(검색어)
조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
조회는 GET 사용. GET은 주로 쿼리 파라미터를 사용해서 데이터를 전달한다. - HTML Form을 통한 데이터 전송
회원 가입, 상품 주문, 데이터 변경 시 사용한다.
HTML Form 전송은 GET, POST만 지원한다.
POST의 바디에 key-value 스타일로 데이터를 만들어서 넣음. 쿼리 파라미터와 거의 동일한 방식으로 서버에 전송. GET는 메시지 바디를 안 쓰기 때문에 쿼리 파라미터(url 경로) 안에 넣어서 서버로 전달한다.
Form을 사용한 POST 파일 전송 방식 (2가지)
- 단순한 form 전송 방식: application/x-www-form-urlencoded
이렇게 Body에 key와 vaule를 =로 연결하고 각 항목이 &로 열결된다. 브라우저는 Body에 있는 값을 변환 포맷에 따라 변환 실시.
- 파일 전송 방식: multipart/form-data
Body 부분에 데이터를 여러 부분으로 나눠서 보내는 방식. 주로 바이너리 데이터를 보낼 때 사용
multipart/form-data 전송방식이 생겨난 이유는?
만약 사진을 업로드 한다고 생각해보자. 그럼 사진을 담은 input가 사진 설명을 담은 input 으로 3개가 body로 들어간다. 사진의 content-type은 image/jpeg일 것이고 사진 설명의 content-type은 application/x-www-form-urlencoded 일 것이다. 두 종류의 데이터가 하나의 HTTP Request Body에 들어가야하는데, 하나의 Body에서 2 종류의 데이터를 구분해서 넣지 못하기 때문에 2종류 이상의 데이터를 넣기 위해 이 방식이 생기게 되었다.
- HTTP API를 통한 데이터 전송 (HTML Form을 사용하지 않은 거의 모든 상황)
회원 가입, 상품 주문, 데이터 변경 시 사용한다.
서버 to 서버 (백엔드 시스템 통신)
앱 클라이언트
웹 클라이언트 (HTML Form 통신이 아닌 자바 스크립트를 통한 통신에 사용한다. - Ajax, React, VueJs)
POST, PUT, PATCH : 메시지 바디를 통해 데이터 전송
GET: 쿼리 파라미터로 데이터 전달
Content-type: application/json 을 주로 사용(거의 표준)
'Network' 카테고리의 다른 글
[ HTTP ] HTTP 상태 코드 (0) | 2024.03.23 |
---|---|
[ HTTP ] API 설계 (Collection VS Store 방식) (0) | 2024.03.22 |
[ HTTP ] HTTP API 설계 시 사용하는 메서드 종류 (0) | 2024.03.19 |
[ HTTP ] HTTP 란? (0) | 2024.03.19 |
[ HTTP ] URI 와 웹브라우저 요청 흐름 (0) | 2024.03.18 |