Server 02 - API와 멱등성
in Web-Programming on Server
API가 뭐요?
API(Application Programming Interface)는 응용 프로그램 간의 상호작용을 가능하게 하는 인터페이스이다. 소프트웨어 애플리케이션, 시스템, 혹은 기기 간에 데이터를 주고받거나 기능을 사용할 수 있도록 돕는 중요한 요소이며, 개발자들은 API를 통해 복잡한 기능을 손쉽게 구현할 수 있으며, 다양한 서비스와 시스템을 유기적으로 연결할 수 있다.
API의 역할
- 데이터 교환: 서로 다른 시스템 간에 데이터를 주고받을 수 있다. 예를 들어, 모바일 앱이 서버에서 사용자 데이터를 가져올 때 API를 사용합니다.
- 기능 제공: 복잡한 기능을 추상화하여 간단한 호출로 사용할 수 있다. 예를 들어, 결제 API를 사용시 복잡한 결제 프로세스를 간단하게 처리할 수 있습니다.
- 서버와 클라이언트의 연결: 웹 애플리케이션에서 클라이언트(브라우저)와 서버 간의 통신을 API가 중개하여, 사용자 요청을 서버에 전달하고 서버 응답을 클라이언트에 반환한다.
API와 멱등성
웹 어플리케이션을 사용하면서 여러 API를 사용하게 될 것이다. 그리고 특정 A PI를 여러번 호출하여 사용할 수 있다. 이 여러번 호출하는 API에 대한 결과가 항상 변하지 않는 성질을 멱등성이라 한다. 정확한 멱등성의 정의는 “여러 번 동일한 요청을 보냈을 때, 서버에 미치는 의도된 영향이 동일한 경우”이다. 이 말인 즉, 멱등성이란 성질을 지키는 것이 API 신뢰성을 높이고, 네트워크 오류로 인한 중복 요청에도 일관된 결과를 보장할 수 있다.
HTTP 메서드와 멱등성
GET (멱등성 있음)
자원의 조회를 담당하며, 동일한 요청을 여러 번 보내더라도 서버의 상태가 변하지 않는다. 예를 들어, GET /users/1 요청은 항상 동일한 사용자 정보를 반환한다.
PUT (멱등성 있음)
자원의 수정 또는 자원 전체를 교체하는 작업을 수행한다. 같은 데이터를 여러 번 보낸다고 해도 서버의 상태는 첫 번째 요청 이후로 변하지 않는다. 예를 들어, PUT /users/1 요청으로 사용자의 정보를 갱신할 때 같은 데이터로 여러 번 요청해도 최종 결과는 동일하다.
DELETE (멱등성 있음)
자원의 삭제를 수행하며, 자원이 이미 삭제된 상태에서 다시 삭제 요청을 보내더라도 오류 없이 동일한 상태를 유지한다. DELETE /users/1 요청은 첫 번째 요청에서 사용자를 삭제하고, 이후 요청은 아무런 영향을 주지 않는다.
POST (멱등성 없음)
자원의 생성 작업을 수행하며, 동일한 요청을 여러 번 보내면 여러 자원이 생성된다. 예를 들어, POST /users 요청으로 동일한 사용자 정보를 보내면 여러 개의 동일한 사용자가 생성될 수 있다.
PATCH (멱등성 여부는 상황에 따라 다름)
자원의 일부를 수정한다. PATCH의 멱등성은 수정 내용에 따라 다를 수 있다. 동일한 수정 작업이 반복되더라도 상태가 변하지 않으면 멱등성을 갖지만, 일부 경우에는 그렇지 않을 수 있다.