
header-field = field-name":" field-value
HTTP 전송에 필요한 모든 부가정보
메세지 바디의 내용, 메세지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보...
표준 헤더가 너무 많음
실제 전송할 데이터
HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
회원 목록 조회 /read-member-list(x)
회원 조회 /read-member-by-id(x)
회원 등록 /create-member(x)
회원 수정 /update-member(x)
회원 삭제 /delete-member(x)
가장 중요한 건 리소스 식별
회원이라는 개념 자체가 바로 리소스
회원이라는 리소스만 식별하면 된다
회원 목록 조회 /members
회원 조회 /members/{id}
회원 등록 /members/{id}
회원 수정 /members/{id}
회원 삭제 /members/{id}
(참고로 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용 권장)
리소스와 행위를 분리해서 행위를 HTTP 메서드로 표현(GET,POST,PUT,DELETE)
GET: 리소스 조회
POST: 요청 데이터 처리, 주로 등록에 사용
PUT: 리소스를 대체, 해당 리소스가 없으면 생성
PATCH: 리소스 부분 변경
DELETE: 리소스 삭제
리소스 조회
서버에 전달하고 싶은 데이터는 query를 통해서 전달
메세지 바디를 사용해서 데이터를 전달할 수 있지만 지원하지 않는 곳이 많아서 권장하지 않음
요청 데이터 처리
메세지 바디를 통해 서버로 요청 데이터 전달
주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
새 리소스 등록
컨트롤 URI도 필요할 수 있음
다른 메서드로 처리하기 애매한 경우
리소스를 대체
리소스 부분 변경
리소스 제거
안전
멱등
캐시가능
데이터 전달방식은 크게 2가지로 쿼리 파라미터를 통하거나 바디를 통하거나
이미지 정적 텍스트 문서
조회는 GET 사용
정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가능
주로 검색, 게시판 목록에서 정렬 필터(검색어)
조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
조회는 GET 사용
GET은 쿼리 파라미터 사용해서 데이터를 전달
HTML Form submit 시 POST 전송
Content-Type: application/x-www-form-urlencoded 사용
Content-Type: multipart/form-data
서버 to 서버
앱 클라이언트 , 웹클라이언트
POST, PUT, PATCH: 메세지 바디를 통해 데이터 전송
GET: 조회, 쿼리 파라미터로 데이터 전달
Content-Type: application/json을 주로 사용(사실상 표준)
문서(document)
컬렉션(collection)
스토어(store)
컨트롤러(controller), 컨트롤 URI