클라이언트에서 서버로 어떻게 데이터를 전송하는가?
전달 방식
1.쿼리 파라미터를 통한 데이터 전송
-주로 GET일 때 사용, 데이터 조회, id?ssafy 와 같은 방식
-주로 정렬 필터(검색어 입력, 게시판의 정렬 조건 설정 등)
2.메시지 바디를 통한 데이터 전송
-POST, PUT, PATCH
-회원가입, 상품 주문, 리소스 등록, 리소스 변경
전송 상황
1.정적 데이터 조회(쿼리 파라미터 미사용)
2.동적 데이터 조회(쿼리 파라미터 사용)
-쿼리 파타미터로 들어온 정보를 key, value로 받아서 서버에서 결과 동적 생성
-주로 검색, 게시판 목록에서 정렬 필터(검색어)
-조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
3-1.HTML Form 데이터 전송(POST 전송, 저장)
-SUBMIT을 클릭시 웹브라우저가 HTTP 메시지를 생성함
-Content-Type은 applicaion/x-www-form-urlencoded 형식으로 되어있음(규약)
-쿼리파라미터와 유사하게 KEY, VALUE 스타일로 HTTP BODY에 넣음
-전송데이터를 encoding 처리 => 한글의 경우 encoding을 해서 넘김
-FORM 태그를 GET 방식으로 전송할 수도 있음, 그렇게 하면 입력 데이터를 쿼리파라미터 형식으로 url 경로에 넣어줌, 따라서 단순 조회 기능을 Form 태그로 구현도 가능함
3-2.HTML Form 데이터 전송(multipart/form-data)
-파일 업로드 같은 byte 데이터를 함께 전송해야 할 때 사용하는 형식
-다른 종류의 여러 파일과 폼의 내용을 함께 전송 가능(그래서 이름이 multipart)
-boundary를 브라우저가 알아서 나누어서 각 데이터를 구분해줌
*참고: HTML Form 전송은 GET, POST만 지원
4.HTTP API 데이터 전송(Form을 사용하지 않는 거의 모든 상황)
-서버 TO 서버: HTML과 같은 데이터 입력 폼 없이 데이터를 전송할 때
-앱 클라이언트: 아이폰, 안드로이드?
-웹 클라이언트: HTML에서 Form 전송 대신 자바 스크립트를 통한 통신에 사용(AJAX) ex) React, Vue.js 같은 웹 클라이언트와 API 통신
-GET, POST, PUT, PATCH 모두 사용 가능
-Content-Type: application/json을 주로 사용(사실상 표준)
-과거 XML, TEXT 등 사용
**API? , HTTP API ? REST API? 차이는 아래 링크 참고
https://bentist.tistory.com/37