클라이언트에서 서버로 데이터 전송하는 방식은 크게 2가지
1. 쿼리 파라미터를 통한 데이터 전송
- GET
- 주로 정렬 필터(검색어)
2. 메시지 바디를 통한 데이터 전송
- POST, PUT PATCH
- 회원가입, 상품 주문, 리소스 등록 등
클라이언트에서 서버로 데이터 전송 - 4가지 상황
1. 정적 데이터 조회
- GET을 이용하며, 쿼리 파라미터 필요없음
2. 동적 데이터 조회
- GET을 이용하며, 쿼리 파라미터 사용
3. HTML Form 데이터 전송(HTML Form 전송은 GET, POST만 지원)
- POST 전송 - 저장 : 웹브라우저가 Form을 이용해 HTTP 요청 메시지 생성
(Content-Type: application/x-www-form-urlencoded 사용)
- GET 전송 - 조회 : 웹브라우저가 Form을 이용해 HTTP 요청 메시지 생성
(* GET 전송을 저장에 사용하면 안됨!! GET은 조회에만 사용!)
- 파일 업로드 같은 바이너리 데이터 전송 시에는 Content-Type: multipart/form-data 사용
4. HTTP API 데이터 전송
• POST, PUT, PATCH: 메시지 바디를 통해 데이터 전송
• GET: 조회, 쿼리 파라미터로 데이터 전달
• Content-Type: application/json을 주로 사용 (사실상 표준)
• TEXT, XML, JSON 등등
HTTP API 설계 예시
1. 컬렉션 : POST 기반 등록 ex) 회원 관리 API 제공
- 클라이언트는 등록될 리소스의 URI를 모름
- 서버가 새로 등록된 리소스 URI를 생성해줌
- 즉 컬렉션이란 서버가 관리하는 리소스 디렉토리
2. 스토어 : PUT 기반 등록 ex) 정적 컨텐츠 관리, 원격 파일 관리
- 클라이언트가 리소스 URI을 알고있어야 함
- 클라이언트가 직접 리소스의 URI 지정
- 즉 스토어란 클라이언트가 관리하는 리소스 저장소
3. HTML FORM 사용 ex) 웹페이지 회원 관리
- GET, POST만 지원하므로 제약이 있음
- 컨트롤 URI => 이런 제약을 해결하기 위해 동사로 된 리소스 경로를 사용
- POST의 /new, /edit, /delete가 컨트롤 URI
- HTTP 메서드로 해결하기 애매한 경우 사용(HTTP API 포함)
-----------------------------------------
참고 : 인프런 김영한님 강의(모든 개발자를 위한 HTTP 웹 기본 지식)
댓글