RESTful API는 Representational State Transfer(표현 상태 전이)를 따르는 API입니다.
웹 상의 자원을 HTTP 프로토콜을 이용해 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 웹 서비스를 제공합니다. RESTful API는 각 자원에 대해 고유한 URI를 할당하고, HTTP 메서드를 이용하여 자원을 조작합니다.
RESTful API의 특징은 다음과 같습니다.
각 자원은 고유한 URI를 가지며, 이를 통해 자원을 식별합니다.
HTTP 메서드(GET, POST, PUT, DELETE 등)를 이용하여 자원을 조작합니다.
JSON, XML 등의 데이터 포맷을 이용하여 데이터를 주고받습니다.
Stateless(무상태)한 통신 방식(서버-클라이언트 구조)
하나의 자원은 하나의 URI를 가지고 URI에 의해 자원의 상태가 결정됩니다.
RESTful API는 간결하고 직관적인 API 설계가 가능하며, 다양한 클라이언트(웹, 모바일 등)에서 쉽게 사용될 수 있습니다. 또한, HTTP의 기본적인 기능을 이용하므로 서비스의 확장성과 재사용성이 높습니다.
RESTful API에서는 다음과 같은 HTTP 메서드가 사용됩니다.
GET: 리소스를 조회할 때 사용합니다. 서버에서 해당 리소스를 응답 바디에 포함하여 반환합니다.
POST: 새로운 리소스를 생성할 때 사용합니다. 요청 바디에 새로운 리소스를 포함하여 서버에 전달합니다.
PUT: 기존의 리소스를 수정할 때 사용합니다. 요청 바디에 수정된 리소스를 포함하여 서버에 전달합니다.
DELETE: 특정 리소스를 삭제할 때 사용합니다.
PATCH: 기존 리소스의 일부를 수정할 때 사용합니다. 요청 바디에 수정 내용을 포함하여 서버에 전달합니다.
HEAD: GET 메서드와 유사하지만, 응답 바디가 없이 해당 리소스의 메타데이터만 반환합니다.
OPTIONS: 서버가 제공하는 리소스에 대한 옵션들을 조회할 때 사용합니다.
HTTP 메서드는 RESTful API의 핵심이며, 각 메서드는 명확한 역할을 가지고 있습니다. 이를 적절히 사용하여 API를 설계하면, 클라이언트와 서버 간에 명확한 인터페이스가 확립되어 서로간의 상호작용이 원활하고 안정적으로 이루어질 수 있습니다.
Create: POST 메서드를 사용하여 새로운 리소스를 생성합니다.
Read: GET 메서드를 사용하여 리소스를 조회합니다.
Update: PUT 또는 PATCH 메서드를 사용하여 리소스를 수정합니다.
Delete: DELETE 메서드를 사용하여 리소스를 삭제합니다.
예를 들어, 새로운 사용자를 생성하는 경우에는 POST 메서드를 사용하여 서버로 요청을 보내고, 서버는 새로운 사용자를 생성하고 해당 사용자의 정보를 담은 리소스를 반환합니다. 사용자 정보를 수정하는 경우에는 PUT 또는 PATCH 메서드를 사용하여 서버로 요청을 보내고, 서버는 해당 사용자의 정보를 수정하고 결과를 반환합니다. 사용자 정보를 삭제하는 경우에는 DELETE 메서드를 사용하여 서버로 요청을 보내고, 서버는 해당 사용자의 정보를 삭제하고 결과를 반환합니다. 이러한 방식으로 RESTful API에서 CRUD 연산을 구현할 수 있습니다.
인증(Authentication)
인가(Authorization)
- 클라이언트가 인증되었다면, 서버는 클라이언트가 요청한 작업을 수행할 수 있는 권한이 있는지 확인해야 합니다.
- 이를 위해 일반적으로 클라이언트의 인증 정보를 기반으로 서버에서 사용자의 권한을 확인합니다.
- 권한 확인이 완료되면 서버는 클라이언트의 요청에 대한 적절한 응답을 반환합니다.
- 예를 들어, 인증된 사용자가 관리자 권한을 가지고 있다면, 서버는 해당 사용자에게 관리자 권한이 필요한 리소스에 대한 접근을 허용합니다.
RESTful API에서는 일반적으로 인증 및 인가를 처리하기 위해 OAuth, JWT 등의 프로토콜과 라이브러리를 사용합니다.