Zasób to rzecz, nad którą pracujesz. Na przykład, jeśli masz interfejs API do przełączania określonej lampy, wówczas zasobem jest sama lampa. Zasób może być fizyczny (np. Lampa, osoba) lub niefizyczny (np. Artykuł, rola, wiersz w bazie danych), zasób może być pierwotny (np. Saldo) lub pochodny (np. Transakcja). Zasób może odnosić się do konkretnej jednostki (np. Piąta lampa zainstalowana w tym gnieździe lampy) lub może odnosić się do roli, która mapuje do innej jednostki w różnym czasie (np. Aktualnie zainstalowana lampa, lampa zainstalowana 5 sierpnia 2008 r.) lub może mapować do wielu podmiotów (np. wszystkich lamp w domu).
Reprezentacja zasobu to sposób, w jaki usługa komunikuje stan zasobu, np. XML, JSON, który reprezentuje stan lampy.
W interfejsie API REST zasób jest identyfikowany przez jednolity identyfikator (np. URI). Pojedynczy zasób może mieć wiele reprezentacji, w interfejsie API REST HTTP normalnie wskazujesz reprezentację, której chcesz użyć w nagłówku HTTP Content-Type i Accept.
Jedną z kluczowych realizacji w architekturze serwera klienta jest to, że nie można dostarczyć zasobu do klienta i nie powinieneś próbować tworzyć go tak, jak robisz. Zamiast tego w interfejsie API REST można zdalnie manipulować zasobem, przesyłając jego reprezentacje. Pomyśl o tym w ten sposób, że nie FedEx lampy, aby klient mógł bezpośrednio manipulować lampą, ale usługa tworzy reprezentację lampy XML / JSON / protobuf / CSV, a klient wysyła reprezentację zamierzonych manipulacji. Usługa następnie manipuluje rzeczywistym stanem lampy w imieniu klienta lub odrzuca żądanie, na przykład jeśli klient nie jest upoważniony do wykonywania operacji na lampie. Może to wydawać się oczywiste / rozdwajające włosy, ale należy zauważyć, że ponieważ reprezentacja nie jest samym zasobem,