Software Quality

RESTful API 본문

기타

RESTful API

Kairoka 2023. 10. 1. 16:28

1. What is API

애플리케이션 프로그래밍 인터페이스(API)는 하나의 소프트웨어 시스템이 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙입니다.

https://www.practitest.com/resource-center/article/api-testing/

 

2. What is REST

Representational State Transfer(REST)는 API 작동 방식에 대한 규칙을 정하는 소프트웨어 아키텍처입니다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌습니다. REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있습니다. 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있습니다.

 

아래 6가지 원칙을 충족한 경우 RESTful한 API라고 말할 수 있습니다.

 

1. Client-Server(클라이언트-서버 구조)

Client Application과 Server Application은 반드시 서로간의 의존성 없이 개발되어야합니다.

Client는 오직 URI만 알고있으면 됩니다.

 

2. Stateless(무상태성)

서버는 클라이언트가 요청한 HTTP Request에 대해서 아무것도 저장하지 않습니다.
만약 클라이언트 앱이 Stateful Application이라면, 요청을 보낼때마다 필요한 정보들을 포함해야 합니다.

 

3. Cacheable(캐시가능)

서버는 Response cache-control 헤더에 해당 요청이 캐싱이 가능한 지에 대한 여부를 제공해야 합니다.

클라이언트는 Response를 캐싱하여 서버와 클라이언트 간의 상호작용을 줄이고, 성능과 서버 가용성을 늘릴 수 있습니다.


4. Uniform Interface(인터페이스 일관성)

구성요소(Client, Server 등) 사이의 인터페이스는 일관적이여야 한다. 인터페이스를 일관화하면 전체 시스템 아키텍처가 단순해지고, 상호작용의 가시성이 개선되며, 구현과 서비스가 분리되므로 독립적인 진화가 가능해집니다.


5. Layered System(다중 계층)

REST는 다중 계층 구조를 가질 수 있도록 허용합니다.

예를 들어 API는 A서버에서 실행, Data는 B서버에 저장, 요청을 검증하는 것은 C 서버에서 진행할 수 있습니다.

클라이언트는 REST 서버와만 통신할 뿐 REST가 상호 작용하는 레이어나 다른 서버에 대해 직접적으로 요청하거나 정보를 확인할 수 없습니다.


6. Code on demand(optional)

대부분은 XML이나 JSON형태로 리소스들에 대한 정적인 표현으로 응답하지만, 서버가 클라이언트에서 실행할 수 있는 로직을 전송하여 클라이언트의 기능을 확장시킬 수 있습니다.

 

3. Components of REST

1. 자원(Resource)

모든 자원에는 고유한 ID가 존재하고, 이 자원은 Server에 존재합니다.
자원을 구별하는 ID는 '/exgroups/:exgroup_id'와 같은 HTTP URI 입니다.
Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청합니다.

 

2. 행위(Verb)

HTTP 프로토콜의 GET, POST, PUT, PATCH, DELETE Method를 제공합니다.

Methd Action 역할 CRUD
GET index/retrieve
모든/특정 리소스를 조회
R(Read)
POST create
리소스를 생성하거나 처리
C(Create)
PUT replace
리소스의 전체를 업데이트
U(Update)
PATCH modify
리소스의 일부를 업데이트
U(Update)
Delete Delete 모든/특정 리소스 삭제 D(Delete)


3. 표현(Representations)

Client와 Server가 데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있습니다.
JSON, XML을 통해 데이터를 주고 받는 것이 일반적입니다.

 

4. REST API Testing

테스트케이스 수행을 통해 아래 값이 기대결과와 일치하는지 확인해야 합니다.

  • Response code
  • Response message
  • Response Body

 

참고

https://aws.amazon.com/ko/what-is/restful-api/

https://www.cloudflare.com/ko-kr/learning/security/api/what-is-an-api/

https://www.practitest.com/resource-center/article/api-testing/

'기타' 카테고리의 다른 글

DAO(Decentralized Autonomous Organization)  (0) 2023.11.13
NFT(Non-Fungible Token)  (0) 2023.10.21
IaaS와 PaaS 그리고 SaaS  (0) 2023.10.08
Web Vitals  (0) 2023.10.05
ATF(Above the Fold) 영역  (0) 2023.09.30