HTTP_ API URI 설계
리소스 식별, URI 계층 구조 활용
- 회원 목록 조회 /members
- 회원 조회 /members/{id}
- 회원 등록 /members/{id}
- 회원 수정 /members/{id}
- 회원 삭제 /members/{id}
- 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용 권장
행위와 리소스 분리
URI는 리소스만 식별하고 행위는 따로 구분.
HTTP 메서드
- GET
-> 리소스 조회
-> query를 통해 데이터 전달
-> body에 담아서 보낼 수는 있지만 권장하지 않음
- POST
-> 요청 데이터 등록, 요청 데이터 처리, 다른 메서드로 처리하기 애매한 경우
-> POST 요청이 오면 요청 데이터를 어떻게 처리할 지 리소스마다 따로 정해놔야함. (무조건 등록은 아님. 정해진것이 없음)
-> body를 통해 데이터 전달
- PUT
-> 리소스 전체 대체, 없으면 생성
-> POST와의 차이점은 클라이언트가 리소스 위치를 알고 URI 지정
- PATCH
-> 리소스 부분 변경
- DELETE
-> 리소스 삭제
이외에도 다양한 메서드가 있지만 가장 많이 사용되는 것은 위에 다섯가지메서드임
HTTP 메서드 속성
- 안전 (Safe)
-> 호출해도 리소스를 변경하지 않음
-> GET, HEAD
- 멱등 (Idempotent)
-> 한 번 호출하든 두번 호출하든 100번 호출하든 결과가 같음
-> 자동 복구 메커니즘에 적용함 (요청이 같아도 괜찮이 때문에)
-> GET, PUT, DELETE (POST는 아님)
- 캐시가능 (Cacheable)
-> 응답 결과 리소스를 캐시에서 사용
-> GET, HEAD, POST, PATCH (실제로는 GET, HEAD만 사용)