Я понимаю, что REST позволяет моделировать операции сервиса как представление состояния и переход из одного состояния в другое с использованием HTTP. Я всегда понимал ресурсы как представления о состоянии сервисной стороны до недавнего времени, когда читал эту статью Джимми Богарда, которого я знаю как умного разработчика / архитектора, которого уважает сообщество. Цитировать конкретное утверждение из этого поста
Представление немного отличается - оно описывает текущее состояние ресурса (по запросу).
Это оставило меня в замешательстве. Каково общепринятое мнение по теме?
rest
api
api-design
Suhas
источник
источник
Ответы:
Короткий ответ
Более длинный ответ - как ни с чем REST, место , чтобы начать с Рой Филдинг диссертации ; в частности глава 5 . Для вашего текущего вопроса вы хотите раздел 5.2.1.
Ресурс
Представление
Итак: «сегодняшняя погода в Лос-Анджелесе» - это ресурс. Представления кандидатов будут включать: текстовый документ с последним прогнозом от национальной службы погоды; визуальное представление метеорологического радара и аудиозапись прогноза.
источник
Ресурс - это то, с чем вы работаете. Например, если у вас есть API для переключения определенной лампы, то ресурс - это сама лампа. Ресурс может быть физическим (например, лампа, человек) или нефизическим (например, статья, роль, строка в базе данных), ресурс может быть первичным (например, баланс) или производным (например, транзакция). Ресурс может ссылаться на конкретную сущность (например, пятую лампу, установленную в этой розетке лампы), или он может относиться к роли, которая сопоставляется с другой сущностью в разное время (например, установленная в данный момент лампа, лампа установлена 5 августа 2008 г.) или он может отображаться на несколько объектов (например, все лампы в доме).
Представление ресурса - это способ, которым ваша служба сообщает о состоянии ресурса, например, XML, JSON, который представляет состояние лампы.
В REST API ресурс идентифицируется унифицированным идентификатором (например, URI). Один ресурс может иметь несколько представлений, в HTTP REST API вы обычно указываете представление, которое хотите использовать в заголовках HTTP Content-Type и Accept.
Одна из ключевых реалий в архитектуре клиент-сервер состоит в том, что вы не можете донести ресурс до клиента, и вам не следует пытаться сделать его так, как вы. Вместо этого в REST API вы дистанционно манипулируете ресурсом, передавая представления ресурса. Представьте себе, что вы не используете FedEx для лампы, чтобы клиент мог напрямую манипулировать лампой, а вместо этого служба создает представление лампы в формате XML / JSON / protobuf / CSV, а клиент отправляет представление предполагаемых манипуляций. Затем служба манипулирует фактическим состоянием лампы от имени клиента или отклоняет запрос, например, если клиент не авторизован для выполнения операций с лампой. Это может показаться очевидным / расщепление волос, но важно отметить, что, поскольку представление не является самим ресурсом,
источник
Ресурс может быть счетом.
Представление представляет собой счет-фактуру в определенный момент времени в формате JSON или в формате XML. Вы можете получить точно такой же счет позже, это будет тот же ресурс, но в потенциально другом состоянии (отменен, оплачен и т. Д.).
Вы берете текущее состояние счета (например, все данные счета в базе данных) и даете ему конкретное представление (например, html, xml, json) в определенный момент времени для передачи на какое-либо другое устройство (например: браузер)
источник