두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
REST
(REpresentational State Transfer)
API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
API
(Application Programming Interface)
다른 소프트웨어 시스템과의 통신을 위한 규칙 정의
RESTful API
라고도 함
균일한 인터페이스를 통해 아키텍처를 단순화하고 분리하여 각 부분이 독립적으로 발전할 수 있도록 함
Resource identification in requests
→ 리소스 식별을 위해 균일한 리소스 식별자를 사용해야 함
Resource manipulation through representations
→ 클라이언트가 지니고 있는 리소스의 표현은 리소스의 상태를 변경∙삭제하기에 충분한 정보를 지니고 있어야 함
→ 이를 위해 서버는 리소스를 자세히 설명하는 메타데이터를 전송
Self-descriptive messages
→ 각 메시지는 그것을 어떻게 처리해야하는지에 대한 충분한 정보를 지니고 있어야 함
→ 이를 위해 서버는 리소스를 적절히 사용하는 방법에 대한 메타데이터을 포함한 명확한 메시지를 전송
Hypermedia as the engine of application state (HATEOAS)
→ 서버는 클라이언트가 이용가능한 리소스에 대한 하이퍼링크와 표현을 응답함
→ 클라이언트는 애플리케이션의 구조나 변경에 대한 정보를 하드코딩할 필요가 없음
Statelessness protocol
Statelessness
→ 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없으므로 서버 부하 제거
Cacheability
→ Client-Server의 상호작용을 부분적으로 또는 완전히 제거
이를 통해 성능을 저하시키는 병목 현상을 제거하고 확장성 지원
GET
→ 지정된 URL에 있는 서버 리소스에 액세스
POST
→ 요청과 데이터 표현을 포함하여 서버에 데이터 전송
→ 동일 요청을 여러 번 전송하면 동일 리소스가 여러 번 생성됨
PUT
→ 서버의 기존 리소스 업데이트
→ 동일 요청을 여러 번 전송해도 결과가 동일함
DELETE
→ 서버의 리소스 제거
데이터
→ HTTP 메서드가 성공적으로 작동하기 위한 데이터가 포함될 수 있음
파라미터
→ 수행해야 할 작업에 대한 자세한 정보를 서버에 제공
1xx
- 조건부 응답2xx
- 성공적으로 처리 완료3xx
- 리다이렉션 완료4xx
- 클라이언트 오류5xx
- 서버 오류