CS

RESTFul API

서머스 2022. 9. 16. 23:22

RESTful API란?

두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스

안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따른다.

 

API(Application Programming Interface)란?

다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙

다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 한다.

웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이이다.

 

클라이언트

웹에서 정보에 액세스하려는 사용자, API를 사용하는 사람 or 소프트웨어 시스템

 

리소스

다양한 애플리케이션이 클라이언트에게 제공하는 정보

클라이언트에 리소스를 제공하는 시스템을 서버라고도 한다.

조직은 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하면서 웹 서비스를 제공한다.

 

REST란?

Representational State Transfer(REST)

API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처

처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다.

REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있다.

쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.

API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있습니다.

 

REST API - REST 아키텍처 스타일을 따르는 API

RESTful API - REST 아키텍처를 구현하는 웹 서비스. 일반적으로 RESTful 웹 API를 나타낸다. 

 

 

REST 아키텍처 스타일의 원칙

균일한 인터페이스

서버가 표준 형식으로 정보를 전송함을 의미한다.

표현 - 형식이 지정된 리소스, 이 형식은 서버 애플리케이션에 있는 리소스의 내부 표현과 다를 수 있다.

아키텍처 제약 조건

  1. 요청은 리소스를 식별해야 한다. 이를 위해 균일한 리소스 식별자를 사용한다.
  2. 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있다. 이를 위해 서버는 리소스를 자세히 설명하는 메타데이터를 전송한다.
  3. 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신한다. 이를 위해 서버는 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송한다.
  4. 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신한다. 이를 위해 서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송한다.

 

무상태

서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법. 

 

계층화 시스템

계층화된 시스템 아키텍처에서 클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터도 응답을 받는다.

서버는 요청을 다른 서버로 전달할 수도 있다.

클라이언트 요청을 이행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층으로 여러 서버에서 실행되도록 RESTful 웹 서비스를 설계할 수 있습니다.

이러한 계층은 클라이언트에 보이지 않는 상태로 유지됩니다.

 

캐시 가능성

* 캐싱 : 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 

웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API 응답을 사용하여 캐싱을 제어한다.

 

온디맨드 코드

소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있다.

 

 

 

참고-

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

 

RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS

 

aws.amazon.com

 

'CS' 카테고리의 다른 글

MVC 패턴  (0) 2022.09.16
함수형 프로그래밍  (0) 2022.09.16
TDD  (0) 2022.09.16
객체 지향 프로그래밍  (0) 2022.09.16
좋은 코드란 무엇인가?  (0) 2022.09.16