리소스는 당신이 작업하는 것입니다. 예를 들어 특정 램프를 전환하기위한 API가있는 경우 리소스는 램프 자체입니다. 리소스는 물리적 (예 : 램프, 사람) 또는 비 물리적 (예 : 기사, 역할, 데이터베이스의 행) 일 수 있으며, 리소스는 기본 (예 : 균형) 또는 파생 (예 : 트랜잭션) 일 수 있습니다. 자원은 특정 개체 (예 :이 램프 소켓에 설치된 다섯 번째 램프)를 참조하거나 다른 시간에 다른 개체에 매핑되는 역할 (예 : 현재 설치된 램프, 2008 년 8 월 5 일에 설치된 램프)을 나타낼 수 있습니다. 또는 여러 개체 (예 : 집안의 모든 램프)에 매핑 할 수 있습니다.
자원의 표현은 서비스가 자원의 상태 (예 : 램프의 상태를 나타내는 XML, JSON)와 통신하는 방법입니다.
REST API에서 자원은 URI (Uniform Identifier)로 식별됩니다. 단일 리소스에는 여러 표현이있을 수 있습니다. HTTP REST API에서는 일반적으로 HTTP Content-Type 및 Accept 헤더에 사용하려는 표현을 나타냅니다.
클라이언트 서버 아키텍처에서 중요한 한 가지 실현은 리소스를 클라이언트로 가져올 수 없으며 그렇게하는 것처럼 만들면 안된다는 것입니다. 대신 REST API에서는 자원 표현을 전송하여 자원을 원격으로 조작합니다. 클라이언트가 램프를 직접 조작 할 수 있도록 FedEx 램프를 사용하지 말고 서비스는 램프의 XML / JSON / protobuf / CSV 표현을 작성하고 클라이언트는 의도 된 조작의 표현을 전송합니다. 그런 다음 서비스는 클라이언트 대신 램프의 실제 상태를 조작하거나 클라이언트가 램프 작업을 수행 할 권한이없는 경우 요청을 거부합니다. 이것은 명백한 / 분열 된 머리처럼 보일 수 있지만, 주목해야 할 중요한 점은 표현 자체가 리소스 자체가 아니기 때문에,