RESTful API (API)
API(Application Programming Interface)
해당 단어를 쉽게 말한다면 두 애플리케이션이 서로 통신하는 방법 이라고 할 수 있을 것 같습니다. API를 통해 서로 다른 소프트웨어 간의 상호작용을 가능하게 합니다. 흔히 웹 프로젝트를 진행하며 API를 사용하는 상황을 아래와 같이 볼 수 있습니다.
- 프론트엔드가 백엔드에 데이터를 요청하고 응답하는 것
- 프로젝트서버에서 데이터베이스에 데이터를 요청하고 응답하는 것
- 프로젝트가 외부 서비스에 데이터를 요청하고 응답 받는 것
요청을 보내는 애플리케이션을 클라이언트라고 하고 응답을 보내는 애플리케이션을 서버라고 합니다.
API는 위에서 말씀드렸다시피 통신하는 방법이라고 합니다. API는 네 가지 방식으로 작동할 수 있습니다.
- SOAP API
클라이언트와 서버는 XML을 사용하여 메시지를 교환합니다. 과거에 더 많이 사용되었으며 유연성이 떨어지는 API입니다. - RPC API
원격 프로시저 호출이라고 부르며, 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송합니다. - Websocket API
양방향 실시간 통신을 지원하는 프로토콜로, 서버와 클라이언트 간에 지속적인 연결을 유지하고 실시간으로 데이터를 주고받을 수 있습니다. - GraphQL API
페이스북에서 개발된 쿼리 언어로, 클라이언트가 필요한 데이터를 정확하게 요청할 수 있게 해줍니다. - REST API
해당 포스트 아래에서 조금 더 자세히 다루겠습니다.
REST API
REST는 Representational State Transfer의 줄임말입니다. API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처입니다. HTTP의 주요 저자 중 한 사람인 로이 필딩이 웹(HTTP)의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 합니다.
REST 구성 요소
자원(Resource) - URI
자원은 웹 서비스에서 제공하는 모든 데이터 또는 객체를 의미합니다. 각 자원은 고유한 URI로 식별됩니다.
자원에 대한 행위(Verb) - HTTP METHOD
CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용합니다.
자원에 대한 행위의 내용(Representation) - HTTP Message Pay Load
클라이언트가 자원에 대한 요청을 보내면, 서버는 해당 자원의 표현을 응답으로 반환합니다. REST에서 자원은 다양한 형식(JSON, XML 등)으로 표현될 수 있습니다.
RESTful API
REST의 기본 원칙을 성실히 지킨 서비스 디자인을 “RESTful”이라고 표현합니다.
그렇다면 REST한 API는 어떻게 만들어야 할까요??
REST API 설계시 지켜야할 중요한 항목 2가지
- URI는 정보의 자원을 표현한다.
- 자원에 대한 행위는 HTTP 메서드로 표현한다.
위 글을 저의 생각으로 표현한다며 URI로 원하는 것(명사)을 표현하고, HTTP 메서드로 원하는 행동(동사)을 표현한다.
HTTP메소드
Method | 역할 |
---|---|
GET | 데이터 조회 |
POST | 데이터 생성 |
PUT | 데이터 전체 수정 (업데이트) |
PATCH | 데이터 일부 수정 (업데이트) |
DELETE | 데이터 삭제 |
RESTful API를 만들기 위한 중심 규칙
- URI는 행위(동사)를 포함하지 않고 명사를 사용한다.
- URI 마지막 문자로 슬래시(/)를 포함하지 않습니다.
- 단어의 결합이 불가피한 경우 구분자로 언더바( _ ) 보다 하이픈( - )울 사용해 URI 가독성을 높입니다.
- 소문자를 사용합니다.
- 파일 확장자는 URI에 포함시키지 않습니다.
참고
RESTful API 설계 가이드
NHN클라우드의 REST API 제대로 알고 사용하기
Spoqa 기술블로그
RESTful API란 무엇인가요?
API란 무엇입니까?