リソースとは、作業しているものです。たとえば、特定のランプを切り替えるためのAPIがある場合、リソースはランプ自体です。リソースは、物理的(例:ランプ、人物)または非物理的(例:記事、ロール、データベース内の行)で、リソースはプライマリ(例:残高)または派生(例:トランザクション)です。リソースは特定のエンティティ(このランプソケットにインストールされている5番目のランプなど)を参照することも、異なるエンティティにマップする役割を参照することもできます(現在インストールされているランプ、2008年8月5日にインストールされたランプなど)。または、複数のエンティティにマッピングできます(たとえば、家のすべてのランプ)。
リソースの表現は、サービスがリソースの状態を通信する方法です。たとえば、XML、JSONはランプの状態を表します。
REST APIでは、リソースは統一された識別子(URIなど)で識別されます。1つのリソースに複数の表現を含めることができます。HTTPREST APIでは、通常、HTTP Content-TypeおよびAcceptヘッダーで使用する表現を指定します。
クライアントサーバーアーキテクチャでの重要な実現の1つは、リソースをクライアントに持ち込むことができないこと、およびそのようにしようとするべきではないことです。代わりに、REST APIでは、リソースの表現を転送することにより、リソースをリモートで操作します。このように考えると、クライアントがランプを直接操作できるようにランプをFedExするのではなく、サービスがランプのXML / JSON / protobuf / CSV表現を作成し、クライアントが意図した操作の表現を送信します。次に、サービスはクライアントに代わってランプの実際の状態を操作するか、クライアントがランプの操作を実行する権限がない場合など、要求を拒否します。これは明らかな髪の毛のように見えるかもしれませんが、重要なのは、表現がリソース自体ではないため、