HTTP API 설계에서 가장 중요한 것은 리소스 식별과 리소스-행위의 분리이다.
리소스만 가지고 설계할 수 없는건 컨트롤URI로 설계한다.
서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달
메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음
스펙 : 대상 리소스가 리소스의 고유한 의미 체계에 따라 요청에 포함된 표현을 처리하도록 요청
메시지 바디에 요청 데이터를 담아 서버에 처리해달라고 요청
POST와 차이점은 클라이언트가 소스 위치를 알고 URI를 지정한다는 것
HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS에서 사용)
CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정 (거의 사용X)
TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 (거의 사용X)
호출해도 리소스를 변경하지 않는다.
ex) GET
응답 결과 리소스를 캐시해서 사용해도 되는가?
GET, HEAD, POST, PATCH 캐시 가능
실제로는 GET, HEAD 정도만 캐시로 사용
POST, PATCH는 본문 내용까지 캐시 키로 고려해야해서 구현이 쉽지 않음
인프런 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를 기반으로 작성했습니다.