웹에서 사용되는 데이터나 자원(resource)을 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식이다.
URI가 부여된 리소스의 상태를 응답으로(JSON, XML등) 전송한다는 의미다.
API
“Application Programming Interface”
여러 프로그램들과 데이터베이스, 그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체이다.
HTTP프로토콜을 사용하기만 해도 된다.
https://www.aaa.com/appointment
//appointment는 엔드포인트
개별 리소스와의 통신을 준수해야한다.
모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다
https://www.aaa.com/doctors/yoon/1.1
//doctors/yoon/1.1는 개별 리소스에 맞는 엔드포인트
🦖엔드포인트 작성은 어떻게 하면 좋을까?
리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직한 방법이다.
CRUD에 맞게 적절한 HTTP메서드를 사용하는 것
멱등성
연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
매 요청마다 같은 리소스를 반환한다
🦖PUT과 PATCH, 교체와 수정은 어떻게 다른걸까?
- PUT
요청한 URI에 페이로드(전송되는 데이터)에 있는 자원으로 대체(저장 또는 변경)하는 메서드다.
=> PUT은 멱등성을 지킨다.
=> 자원이 전체 교체된다! 전체가 아닌 일부만 전달할 경우 전달한 필드 외 값이 모두 null or 초기값 처리된다!- PATCH
자원에 대한 부분적인 수정을 적용하기 위한 HTTP메서드다.
=> PATCH는 멱등성을 지키지 못한다.
=> 자원이 부분 교체된다.
응답 내에 새로운 링크를 넣어(리소스의 URI도 포함!) 새로운 기능에 접근할 수 있도록 한다.