Ресурс - это то, с чем вы работаете. Например, если у вас есть API для переключения определенной лампы, то ресурс - это сама лампа. Ресурс может быть физическим (например, лампа, человек) или нефизическим (например, статья, роль, строка в базе данных), ресурс может быть первичным (например, баланс) или производным (например, транзакция). Ресурс может ссылаться на конкретную сущность (например, пятую лампу, установленную в этой розетке лампы), или он может относиться к роли, которая сопоставляется с другой сущностью в разное время (например, установленная в данный момент лампа, лампа установлена 5 августа 2008 г.) или он может отображаться на несколько объектов (например, все лампы в доме).
Представление ресурса - это способ, которым ваша служба сообщает о состоянии ресурса, например, XML, JSON, который представляет состояние лампы.
В REST API ресурс идентифицируется унифицированным идентификатором (например, URI). Один ресурс может иметь несколько представлений, в HTTP REST API вы обычно указываете представление, которое хотите использовать в заголовках HTTP Content-Type и Accept.
Одна из ключевых реалий в архитектуре клиент-сервер состоит в том, что вы не можете донести ресурс до клиента, и вам не следует пытаться сделать его так, как вы. Вместо этого в REST API вы дистанционно манипулируете ресурсом, передавая представления ресурса. Представьте себе, что вы не используете FedEx для лампы, чтобы клиент мог напрямую манипулировать лампой, а вместо этого служба создает представление лампы в формате XML / JSON / protobuf / CSV, а клиент отправляет представление предполагаемых манипуляций. Затем служба манипулирует фактическим состоянием лампы от имени клиента или отклоняет запрос, например, если клиент не авторизован для выполнения операций с лампой. Это может показаться очевидным / расщепление волос, но важно отметить, что, поскольку представление не является самим ресурсом,