- 리소스를 식별하는것이 관건
- 미네랄을 캔다
- 미네랄 → 리소스
- 캔다 → 행위
- 회원을 등록한다
- 회원 → 리소스
- 등록한다 → 행위
- 미네랄을 캔다
- 리소스를 식별한 후 행위에 해당하는 기능은 어떻게 구분할 것인가?
- 메소드로 구분
- 정리
- API 설계 시 리소스와 행위를 분리
URI
는리소스만 식별
행위
는메소드
로 구현
리소스를 조회
하는 메소드
데이터 처리를 요청
하는 메소드
-
스펙
- POST 메소드는 대상 리소스가 리소스의 고유한 의미 체계에 따라 요청에 포함된 표현을 처리하도록 요청합니다.
→ 리소스 URI에 POST 요청이 오면
요청 데이터를 어떻게 처리할 지 리소스마다 따로 정해줘야 함
(정해진 것이 없음)
- POST 메소드는 대상 리소스가 리소스의 고유한 의미 체계에 따라 요청에 포함된 표현을 처리하도록 요청합니다.
→ 리소스 URI에 POST 요청이 오면
-
가장 강력한 메소드 → 뭐든 다 할 수 있음
-
메시지 바디를 통해 서버로 데이터 전달
-
서버는 전달받은 데이터를 처리
- ex) 신규 리소스 등록, 프로세스 처리 등
-
처리 과정 (새 리소스 생성)
-
POST 메소드로 처리하는 일
- 새 리소스 생성 (
등록
) 요청 데이터 처리
- 단순히 데이터를 생성하거나 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
- ex) 주문 결제 완료 → 배달 시작 → 배달 완료
- 과정이 바뀔 때 POST로 프로세스 변경을 처리
- POST /orders/{ordeId}/start-delivery →
컨트롤 URI
- 컨트롤 URI → 리소스만으로 URI를 설계할 수 없을 때 동사 형태의 URI 만듦
- 리소스의 생성이 없을 수도 있음
- 다른 메서드로 처리하기 애매한 일 처리
- 새 리소스 생성 (
리소스를 완전히 대체
하는 메소드
-
폴더에 파일 넣기와 비슷
- 같은 파일이 없으면 → 파일 생성
- 같은 파일이 있으면 → 파일 덮어 씌움
-
POST와 차이점
리소스를 수정
할 때 사용
리소스를 제거
URI 지정 → PUT, PATCH, DELETE
- 메소드를 적용할 리소스의 URI를 모르면 사용할 수 없다!
메소드를 호출해도
리소스를 변경하지 않음
- get만 안전
메소드를
한번 호출하든 100번 호출하든 결과가 똑같음
- get, put, delete - 멱등 o
- get → 한번 조회하든 100번 조회하든 똑같음
- put → 1번 덮어씌우든 100번 덮어씌우든 똑같음
- post, patch - 멱등 x
- post → 2번 호출하면 2번 결제됨
- 활용 - 자동 복구 메커니즘
- delete 요청 시 응답 없음 → 다시 delete 요청
웹 브라우저
내부에응답받은 리소스를 저장
할 수 있는가