- 웹 애플리케이션을 개발하기 위한 아키텍처 스타일 중 하나로 클라이언트와 서버 간의 ‘통신 방식’을 규정한 것입니다. - 해당 통신 방식은 ‘HTTP 프로토콜’을 기반으로 하며 자원, 행위, 표현 세 가지 요소로 구성됩니다.
💡 REST API (Representational State Transfer) 란?
- REST 아키텍처 스타일에 따라 구성한 API를 의미합니다.
💡 RESTful API (Representational State Transfer)란?
- HTTP를 위한 아키텍처 스타일 중 하나로 REST의 원칙을 따르는 웹 서비스를 ‘구현하는 방식’이며 웹 서비스를 개발하는 방식입니다. - 클라이언트와 서버 간 자원을 주고받을 때 '일괄적인 방식'을 제공하며 이를 통해 서버와 클라이언트의 역할을 '명확하게 분리'하고 서로 '독립적'으로 개발할 수 있게 됩니다.
[ 더 알아보기 ] 💡 프로토콜(Protocol) 이란?
- 클라이언트와 서버 간의 통신을 위한 약속된 규칙을 말합니다.
💡 REST API와 RESTful API의 차이점은?
- REST API는 REST 아키텍처 스타일을 따르는 API이며 RESTful API는 REST API를 제공하는 웹 서비스를 의미합니다. - 결론적으로는 RESTful API는 REST API의 원칙을 따르기 때문에 REST API보다는 조금 더 RESTful 하다고 볼 수 있습니다.
💡 Restful 하다 의미는?
- REST API의 원칙을 따라 구성한 웹 서비스를 의미합니다. 자원을 URL로 표현하고 HTTP Method를 이용해 해당 자원에 대해 CRUD 작업을 수행하며 리소스와 행위를 명시적으로 분리하여 사용함으로써 URL만 보고도 어떤 동작을 수행하는지 알 수 있도록 구성한 것을 의미합니다.
💡 API(Application Programming Interface)란? - 응용 프로그램에서 사용할 수 있는 인터페이스를 의미합니다. 즉, 프로그램이 다른 프로그램과 상호작용하기 위한 규약입니다. - API를 사용하면 다른 개발자가 만든 기능을 우리가 만든 프로그램에서 사용할 수 있습니다. 이를 통해 기존의 코드를 다시 작성하지 않고도 다른 기능을 활용할 수 있다는 장점이 있습니다.
- 웹 상에 존재하는 데이터나 정보와 같은 모든 것을 의미합니다. 예를 들어, 사용자, 글, 댓글, 이미지 등이 모두 자원이 될 수 있습니다. - 자원의 이름 구성은 동사가 아닌 '명사'를 사용하는 것을 권장합니다. 동사를 사용하면 URI가 길어지고 동사의 형태가 바뀌면 URI도 바뀌어 버리기 때문입니다.
- HTTP Method를 이용한 자원에 대한 행위(조회, 생성, 수정, 삭제)를 의미합니다.
HTTP Method
행위
설명
예스
GET
자원을 조회
URI로 지정된 정보를 검색합니다.
사용자 정보 조회: GET /users/{user_id}
POST
자원을 생성
URI로 지정된 위치에 새로운 자원을 생성합니다.
사용자 정보 생성: POST /users
PUT
자원을 수정
URI로 지정된 위치의 자원을 갱신합니다.
사용자 정보 수정: PUT /users/{user_id}
DELETE
자원을 삭제
URI로 지정된 위치의 자원을 삭제합니다.
사용자 정보 삭제: DELETE /users/{user_id}
PATCH
자원 일부를 수정
URL로 지정된 위치의 리소스의 일부를 수정하는데 사용이 됩니다.
사용자 이메일 수정 : PATCH /users/{user_id}
[ 더 알아보기 ]
💡 PUT과 PATCH의 차이점은?
- PUT 메서드는 ‘전체 리소스’를 교체하는 데 사용되는 반면에 PATCH 메소드는 ‘일부 리소스’를 수정하는 데 사용됩니다. - 전체 리소스를 변경하는 경우는 모든 정보를 완전히 교체하는가 아니면 일부만 교체하는가의 차이점이 있습니다. - 이를 실행하기 위해서는 리소스의 수정 내용을 포함하는 요청 본문을 전송해야 합니다. 일반적으로 JSON 또는 XML 형식으로 전송됩니다.
- RESTful API를 사용하는 클라이언트 개발자나 다른 개발자들이 API를 쉽게 이해하고 사용할 수 있도록 문서화가 필요합니다. - API 문서는 API URL, 자원(Resource), 행위(Verb)/HTTP Method, 표현(Representation), 상태코드, 응답 형태 등을 상세하게 기술해야 합니다. - 위와 같은 단계를 따라 RESTful API를 설계하면 클라이언트와 서버 간 일관적인 자원 교환 방식을 보장할 수 있으며 유지보수가 용이한 API를 만들 수 있습니다.
- 클라이언트가 서버에게 요청을 보내어 통신을 하는 URL을 의미합니다. 예를 들어 "https://example.com/users"에서 users 는 엔드포인트를 가리키며 엔드포인트는 HTTP Method(GET, POST,. PUT, DELETE 등)와 함께 사용이 됩니다.
[참고] API Endpoint를 정의할 때는 다음과 같은 사항을 고려 사항
고려 사항
설명
URL 구조
일관성 있는 URL 구조를 유지해야 합니다.
HTTP Method
각 Endpoint에 대해 지원하는 HTTP Method(GET, POST, PUT, DELETE 등)을 정의해야 합니다.
Request와 Response 포맷
Request와 Response의 데이터 형식(JSON, XML, CSV 등)을 정의해야 합니다.
💡 API는 지속적으로 변경될 수 있기 때문에 API 문서도 업데이트가 필요합니다. 💡 API가 변경되면 문서화도 함께 업데이트하여 최신 버전을 유지해야 합니다. 💡 API 문서는 상세하고 명확하게 API 문서를 작성하여 개발자와 사용자가 API를 쉽게 이해하고 사용할 수 있도록 해야 합니다.
💡 [참고] 해당 글은 다음 글에서 실제 응용을 하는 방법에 대해 다룹니다. 이를 참고하시면 크게 도움이 됩니다.