클라이언트에서 서버로 데이터 전송

데이터 전달 방식은 크게 2가지
- 쿼리 파라미터를 통한 데이터 전송(GET, 정렬 필터)
- 메시지 바디를 통한 데이터 전송(POST, PUT, PATCH)

정적 데이터 조회

- 이미지, 정적 텍스트 문서. 조회는 GET 사용.
- 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능.

동적 데이터 조회

- 주로 검색, 게시판 목록에서 정렬 필터.
- 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용.

HTML Form을 통한 데이터 전송
- HTML Form submit시 POST 전송.
- Content-Type: application/x-www-form-urlencoded 사용, form의 내용을 메시지 바디를 통해서 전송.
- Content-Type: multipart/form-data, 파일 업로드 같은 바이너리 데이터 전송 시 사용.

-  POST방식 뿐만 아니라 GET 방식으로도 전송 가능!

HTTP API를 통한 데이터 전송
- 서버 to 서버, 앱 클라이언트
- 웹 클라이언트(HTML에서 Form 전송 대신 JS를 통한 AJAX 통신에 사용)
- POST, PUT, PATCH의 경우 메시지 바디를 통해 데이터 전송하고 GET은 조회할 경우.
- Content-Type: application/json을 주로 사용 (사실상 표준)

 

HTTP API 설계 예시

HTTP API-컬렉션(POST 기반 등록)
- 회원 관리 시스템을 만든다고 가정.


- 클라이언트는 등록될 리소스의 URI를 모름. /members에 POST 방식이라고 하고 등록할 데이터만 넘겨주기.
- 서버에서 새로 등록된 리소스 URI를 생성. /members/100 이런 식으로...
- 이런 방식을 Collection이라고 함. 서버가 관리하는 리소스 디렉터리. 여기서 컬렉션은 /members.

HTTP API-스토어(PUT 기반 등록)
- 파일 관리 시스템을 만든다고 가정.

- 클라이언트가 리소스 URI를 알고 있어야 함. /files.{filename} -> PUT
- 클라이언트가 직접 리소스의 URI를 지정하고 관리. 서버는 그냥 오는데로 해주는것.
- 이런 방식을 Store라고 함. 클라이언트가 관리하는 리소스 저장소. 여기서 스토어는 /files.

HTML FORM 사용
- GET, POST만 지원. AJAX 같은 기술을 사용해서 해결 가능.
- 컨트롤 URI. GET, POST만 지원하는 제약을 해결하기 위해 동사로 된 경로 사용. 
- POST의 /new, /edit, /delete가 컨트롤 URI라 할 수 있음. 

* 참고하면 좋은 URI 설계 개념
https://restfulapi.net/resource-naming/

 

REST Resource Naming Guide

In REST, having a strong and consistent REST resource naming strategy – will prove one of the best design decisions in the long term.

restfulapi.net

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com