
REST API
REST API
- 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
REST ( Representational State Transfer )
- API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- 대규모의 고성능 통신을 안정적으로 지원할 수 있다.
- 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.
REST 아키텍처 스타일의 원칙
균일한 인터페이스
- 모든 RESTful 웹 서비스 디자인의 기본.
- 균일한 인터페이스에는 4가지 아키텍처 제약 조건이 있다.
- 요청은 리소스를 식별해야 한다.
- 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있다.
- 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신한다.
- 클라이언트는 작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신한다.
무상태
- 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법.
계층화 시스템
- 클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터도 응답을 받는다.
캐시 가능성
- 서버 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원
온디맨드 코드
- 서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있다.
REST API 장점
확장성
- REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있다.
유연성
- 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리.
독립성
- API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다.
REST API 클라이언트 요청에는 무엇이 포함되어 있나?
고유 리소스 식별자
- 서버는 고유한 리소스 식별자로 각 리소스를 식별한다.
- REST의 경우 서버는 일반적으로 URL(Uniform Resource Locator)을 사용하여 리소스 식별을 수행한다.
- URL은 리소스에 대한 경로를 지정.
- URL은 웹페이지를 방문하기 위해 브라우저에 입력하는 웹 사이트 주소와 유사.
- URL은 요청 엔드포인트라고도 하며 클라이언트가 요구하는 사항을 서버에 명확하게 지정.
메서드
- Hypertext Transfer Protocol(HTTP)을 사용하여 RESTful API를 구현
GET
- 웹 페이지나 데이터를 요청
- 서버의 지정된 URL에 있는 리소스에 액세스한다.
- GET 요청을 *캐싱하고 RESTful API 요청에 파라미터를 넣어 전송하여 전송 전에 데이터를 필터링하도록 서버에 지시할 수 있습니다.
- 캐싱 : 파일 복사본을 캐시 또는 임시 저장 위치에 저장하여 보다 빠르게 액세스할 수 있도록 하는 프로세스
POST
- 새로운 글이나 데이터를 전송
- 서버에 데이터를 전송한다.
- 요청과 함께 데이터 표현이 포함된다.
- 동일한 POST 요청을 여러 번 전송하면 동일한 리소스를 여러 번 생성하는 부작용이 있다.
PUT / PATCH
-
기존 리소스를 업데이트한다.
-
| PUT | PATCH |
|---|
| 전체를 변경 | 일부를 변경 |
| 멱등성O | 멱등성X |
- 멱등성(Idempotence)은 동일한 작업을 반복적으로 수행해도 결과가 변하지 않는 특성을 의미.
DELETE
- 저장된 글이나 데이터를 삭제할 수 있다.
- 리소스를 제거한다.
- DELETE 요청은 서버 상태를 변경할 수 있다.
- 하지만 사용자에게 적절한 인증이 없으면 요청은 실패.
HTTP 헤더
- 클라이언트와 서버 간에 교환되는 메타데이터
- 예를 들어, 요청 헤더는 요청 및 응답의 형식을 나타내고 요청 상태 등에 대한 정보를 제공.
데이터
- REST API 요청에는 POST, PUT 및 기타 HTTP 메서드가 성공적으로 작동하기 위한 데이터가 포함될 수 있다.
파라미터
- 수행해야 할 작업에 대한 자세한 정보를 서버에 제공하는 파라미터가 포함될 수 있다.
- URL 세부정보를 지정하는 경로 파라미터.
- 리소스에 대한 추가 정보를 요청하는 쿼리 파라미터.
- 클라이언트를 빠르게 인증하는 쿠키 파라미터.