- 클라이언트에서 서버로 데이터 전송
- HTTP API 설계
HTML Form을 통한 데이터 전송
Form 설정에서 메소드를 GET 또는 POST로 지정할 수 있고(GET과 POST만 지원), 웹브라우저가 자동으로 HTML Form의 데이터를 읽어서 HTTP 메시지 생성해준다.
POST의 경우에는 바디에 Key=Value 형식 (쿼리 파라미터와 동일한 형식)으로 데이터를 넣어서 전송하고 메소드 설정이 GET 방식으로 되어있다면 쿼리 파라미터 방식으로 URI에 쿼리를 포함하여 데이터를 전송한다.
디폴트로 Content-Type: application/x-www-form-urlencoded가 설정되며
enctype을 multipart/form-data로 지정 시, 웹브라우저가 자동으로 boundary를 생성하여 한번에 여러 종류 타입의 데이터를 전송할 수 있다. 파일 업로드 같은 바이너리 데이터 전송시 사용한다.
HTTP API를 통한 데이터 전송
안드로이드나 아이폰 어플리케이션에서의 데이터 교환과 같이 클라이언트에서 서버로 데이터를 바로 전송할 때 사용한다.
HTTP의 바디에 json, text, xml 등의 형식으로 데이터를 직접 넣어서 전송한다.
Content-Type: application/json을 주로 사용한다.
서버 to 서버, 앱 클라이언트 등 대부분의 경우에서 사용한다.
웹 클라이언트에서도 form 전송 대신 자바 스크립트를 통한 통신(AJAX)에서 사용된다.
이 전송방식은 POST, PUT, PATCH, GET 메소드 전부 사용 가능하고, GET 사용시는 쿼리 파라미터로 데이터 전달하는 것을 권장한다.
HTTP API - 컬렉션 (POST 기반 등록)
클라이언트는 등록될 리소스의 URI를 모른다.
서버가 새로 등록될 리소스에 대한 URI를 만들어준다.
ex) POST /members
컬렉션
- 서버가 관리하는 리소스 디렉토리 ex) /members
- 서버가 리소소의 URI를 생성하고 관리
HTTP API - 스토어 (PUT 기반 등록)
클라이언트가 리소스 URI를 알고 있어야한다.
ex) PUT /files/star.jpg
스토어
- 클라이언트가 관리하는 리소스 저장소 ex) /files
- 클라이언트가 리소소의 URI를 알고 관리
HTML FORM 사용 시
순수 HTML, HTML Form은 GET, POST만 지원하기 때문에 제약이 있고, 동사로 된 컨트롤 URI를 사용해야함 ex) /new, /edit, /delete
추가로 HTTP 메서드로 해결하기 애매한 경우에도 컨트롤 URI를 사용한다. (HTTP API 포함)
해당 포스팅은 김영한님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식"를 수강하고 배운 내용을 정리한 글입니다.