데이터 전송 방식
데이터 전달
클라이언트에서 서버로 데이터를 전달하는 방식은 크게 2가지가 있다.
- 쿼리 파라미터를 통한 데이터 전송
- 메시지 바디를 통한 데이터 전송
HTTP API 설계
정적 데이터 조회 시
- 사용 메서드: GET
- 정적 데이터란 이미지나 정적 텍스트 문서 등을 말한다.
- 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가 가능하다.
동적 데이터 조회 시
- 사용 메서드: GET
- 쿼리 파라미터를 사용해 데이터를 전달한다.
- 주로 검색 혹은 게시판 목록에서 정렬 필터(검색어)
- 필터나 정렬에 주로 사용한다.
- 사용 메서드: GET, POST
- HTML Form은 GET과 POST만 지원한다.
- GET은 조회에만 사용해야 한다.
- Content-Type: application/x-www-form-urlencoded를 사용한다.
- form의 내용을 메시지 바디를 통해서 전송한다.
- 전송 데이터는 key=value 형식이다.
- 전송 데이터는 url encoding 처리 된다. (한글을 유니코드로)
- Content-Type: multipart/form-data
- 파일 업로드 같은 바이너리 데이터를 전송 시 사용한다.
- 다른 종류의 여러 파일과 Form의 내용을 함께 전송할 수 있다.
HTTP API 데이터 전송 시
- 사용 메서드: GET, POST, PUT, PATCH
- GET은 조회 시 사용한다.
- GET을 제외한 나머지는 메시지 바디를 통해 데이터를 전송한다.
- 사용 대상
- 서버 to 서버
- 앱 클라이언트
- 웹 클라이언트: HTML From 대신 자바 스크림트를 통한 통신(Ajax)
- Content-Type: application/json
컬렉션과 스토어
컬렉션(Collection)
- POST 메서드일 경우 해당된다.
- 서버가 관리하는 리소스 디렉토리를 말한다.
서버가 리소스 URI를 생성하고 관리할 경우, URI의 리소스를 컬렉션이라고 부른다.
이때, 클라이언트에서는 리소스를 모른다.
// 회원등록
// 컬렉션: /members
POST /members
스토어(Store)
- PUT 메서드일 경우 해당된다.
- 클라이언트가 관리하는 리소스 저장소
클라이언트가 리소스의 URI를 알고 관리한다.
즉, 클라이언트가 요청할 때 URI에 리소스를 특정할 수 있을 때를 말한다.
// 파일등록: 있으면 대체, 없으면 생성
// 스토어: /files
PUT /files/cat.jpg
컨트롤 URI
- 컨트롤러(Controller)라고 부르기도 한다.
- 동사를 직접 사용한다.
- 컨트롤 URI 예시: /members/{id}/delete
HTML Form에서는 GET과 POST만 지원하기 때문에 URI에 제약이 있을 수밖에 없다.
이러한 제약을 해결하기 위해 동사로 된 리소스 경로를 사용하도록 허용하는데, 이러한 URI를 컨트롤 URI라고 말한다.
HTTP API에서도 HTTP 메서드로 해결하기 애매한 경우에 사용한다.
Reference
인프런 강의
모든 개발자를 위한 HTTP 웹 기본 지식 강의 - 인프런