Что такое отдых: Отдых | это… Что такое Отдых?

Содержание

Что такое отдых? Простой вопрос и варианты ответа | Дом и семья

 — Ну, это просто, — уверенно скажет кто-то. — Отдых — это НЕработа, вот и все. Возможность остаться дома, ходить в халате или трусах, валяться на диване и ничего не делать. Целый день — ничего! Ну, может быть, пропылесосить пылесосом, помыть посуду в посудомойке, постирать, то есть опять же закинуть белье и нажать кнопку. К вечеру котлет накрутить. Ну или не котлет, другое чего-нибудь. За ребенком присмотреть. И все! А все остальное время, весь бесконечный день — смотреть сериалы, сидеть в инете, читать что-то при желании, вышивать на пяльцах и вообще заниматься тем, чем душеньке угодно…

 — Нет уж, отдых — это как раз на работе! — не менее уверенно скажет кто-то другой. — Вот я бы работала — горя бы не знала. Накрасишься, нарядишься, причешешься, с людьми целый день. Каждый день что-то новенькое, жизнь кипит! Подруги, комплименты, интриги! Коллектив! Не то что дома — вечный день сурка! Поговорить не с кем. И даже праздник не в праздник…

 — Отдых — это смена деятельности! — строго скажет чья-то мудрая бабушка. Или теща. Или свекровь. И в свой выходной день все домочадцы, надев рюкзаки и взяв под мышку детей и семейного любимца таксу Фердинанда, садятся на электричку и едут на дачу, где природа и свежий воздух. Добравшись с тремя пересадками до какой-нибудь Ивановки, сорок пять минут идут пешком с рюкзаками, домашними животными и малыми детьми собственно на свой участок. И там немедленно приступают к работе согласно составленного прародительницей плана, ибо дел-то куча, а выходных всего два дня, половина из которых, к тому же, уходит на дорогу.

Копают, таскают, прибивают и пропалывают сорняки, тяжело и лихорадочно дыша свежим воздухом, пока окончательно не стемнеет. Кое-как переночевав в отсыревших затхлых постелях садового домика и наскоро завершив наутро какие-то дела, семейство трогается в обратный путь — с чадами, рюкзаками и ведрами яблок в руках, сорок пять минут пешком на станцию, потом на электричку с пересадками. Затемно приехав домой, костеря все на свете выходные, сбросив с плеч рюкзаки, отмыв детей и отчистив из-под ногтей черные полосы дачной грязи, члены семьи замертво падают в постели, ибо завтра с утра — на работу. Может, хоть там удастся отдохнуть…

 — Отдых — это путешествия, — говорит моя знакомая. — Дома не отдохнешь. Надо обязательно куда-нибудь ехать, хоть за десять километров от МКАД, иначе это не отдых… — и она едет на море на месяц. Отдыхать. Отдых начинается по традиции с недельного расстройства ЖКТ с температурой, рвотой и твердым намерением тут же, оклемавшись, поменять билеты и вернуться в Москву (ну, а что вы хотите — адаптация), потом две недели просто-таки изнывает от скуки, курсируя от пляжа к дому и от дома к пляжу с заходом на местный рынок, изо всех сил излучая оптимизм и развлекая на каждом этапе ноющего ребенка. А то еще и скучающего мужа. Перед самым отъездом ребенок, как правило, хватает какой-нибудь бронхит или отит, она ищет там, в незнакомом городе, нормальных врачей, потом везет ребенка домой с зашкаливающей температурой, где еще с полмесяца долечивает осложнения и последствия, после чего серьезно сваливается сама…

 — Да ерунда, — говорит кто-то еще. — В России — это не отдых, а мучение. За границу надо ездить, вот что. Там инфраструктура развитая, все что хочешь, то и обрящешь — экскурсии, питание, аниматоры для детей и для взрослых… Вот это отдых так отдых! — но, вернувшись из поездки на солнечные берега в мрачную слякотную Москву, никак не может войти в колею, неделями находясь в апатии и повторяя: «Как же я устал!»…

 — Эх, отдохну! — говорит знакомая, собирая вещи, чтоб улечься на плановое обследование по поводу хронического заболевания. — Буду десять дней лежать на кровати, спать, жевать яблоки, читать книгу и ничего не делать! И вы ко мне не приходите, я не буду ни краситься, ни причесываться в кои-то веки! Красота! Не готовить, посуду не мыть — только спать, есть и плевать в потолок! Курорт!

Через три дня знакомая, видимо, отлежав бока, начинает ныть и жаловаться, пока наконец не сбегает из больницы, не долежав пару дней, потому что «это с ума сойти можно, вот так лежать сутками и СОВЕРШЕННО ничего не делать»…

 — Вот бы мне выспаться! Тогда уж точно все было бы по-другому! — мечтает еще кто-то. И — о чудо! — домашние идут навстречу, проявив наконец благородство, забрав детей, передвигаясь по квартире на цыпочках, не гремят на кухне кастрюлями и лишний раз не посещают туалет, дабы не сливать там воду. Ведь действительно, ну надо же человеку выспаться хоть в полгода раз. А наш герой, проснувшись за полдень с головной болью, чувствует себя преотвратно…

К тому же с течением лет понимаешь, что после отдыха всегда будет похмелье. Физическое — типа той акклиматизации после поездки, и моральное — ведь, пока ты отдыхал, кто-то оставался на месте выполнять твою работу в нагрузку к своей, сам никуда не поехал; и справился, между прочим. И неплохо справился, ибо без тебя никто не умер и ничего не остановилось. А тебе сейчас, после отдыха, впрячься в старую лямку еще сложнее… И от чувства вины перед предоставившими тебе возможность отдохнуть и взвалившими на себя твои обязанности — никуда не деться.

Может быть, когда-нибудь в будущем изобретут лекарство от бытовой усталости. Выпил таблеточку — и через несколько минут полностью восстановился. Как розовый зайчик с энерджайзером. И полежать не тянет, и ехать никуда не надо, а главное, не хочется, и уж тем более — деятельность менять.

Хотя наверняка что-то подобное есть и в современной медицине, только, скорей всего, регулярный прием чудо-средства весьма чреват.

Научите меня отдыхать, а?

Теги:

нагрузка,
свободное время,
эмоции,
досуг,
отдых,
отпуск

Как отдыхать, чтобы действительно отдохнуть? 7 главных правил

Как отдыхать, чтобы действительно отдохнуть? 7 главных правил







  • mix» data-ping-position=»1″ data-featured-url=»https://kudago.com/msk/event/vyistavka-avtomotostarina/» data-item-url=»https://kudago.com/msk/event/vyistavka-avtomotostarina/» data-featured-path=»/msk/best/»>

    2

    598

  • mix» data-ping-position=»2″ data-featured-url=»https://kudago.com/msk/list/kuda-shodit-s-detmi-9/» data-item-url=»https://kudago.com/msk/list/kuda-shodit-s-detmi-9/» data-featured-path=»/msk/best/»>

    13

    47144

  • com/msk/list/6-kontsertov-dlya-vlyublyonnyih-v/» data-item-url=»https://kudago.com/msk/list/6-kontsertov-dlya-vlyublyonnyih-v/» data-featured-path=»/msk/best/»>

    42

    95993

  • com/msk/list/organnaya-muzyika-v-moskve/» data-featured-path=»/msk/best/»>

    133

    153953

  • com/msk/list/do-1500-rub/» data-featured-path=»/msk/best/»>

    5

    22085

Фото:

livejournal.com

Фото:

onetwotrip.com

Фото:

ВКонтакте

Фото:

ВКонтакте

Необычные концерты в Соборе Петра и Павла. 12+

Джаз, средневековая и классическая музыка на органе. Реклама. ИП Романенко Олег Иванович. ИНН 771471613250

Смотреть расписание

1. Заставьте себя отдохнуть

Первая опасность подстерегает нас вечером обычного рабочего дня, когда уже ничего не хочется. Чтобы не просидеть весь вечер в соцсетях, заранее отрежьте себе пути к отступлению. Купите билет на концерт, пообещайте супруге поход в ресторан, поспорьте с другом, что не пропустите тренировку. А чтобы не соображать на усталую голову, прямо сейчас проделайте простое упражнение «Сценарии вечернего отдыха».

Поделите лист на две колонки. Слева напишите варианты типичного унылого вечера: «листать », «сидеть у телевизора». А справа — вспомните хорошие варианты: «гулять в любимом парке», «сходить на новую выставку», «нырнуть в бассейн после тренировки в зале».

2. Устройте «полувыходной»

Отличный вариант для тех, кто встречает пятницу в состоянии выжатого лимона. Всё, что нужно сделать, это один раз в неделю закончить с делами пораньше на 1-2 часа, выйти из офиса и осуществить один из сценариев вечернего отдыха. Сделайте то, на что обычным вечером не хватает времени и сил: сходите в кино, в аквапарк или на концерт. Качественно отдохнув посреди недели, в оставшиеся рабочие дни вы успеете намного больше. Для полувыходного идеально подойдёт вечер среды.

3. Спланируйте и оптимизируйте быт на выходные

Планировать отдых на выходные — приятное занятие, с этим редко возникают проблемы. А вот гора домашних дел — это реальная опасность всё испортить. Ведь именно в выходные большинство из нас привыкли закупаться продуктами, делать уборку, стирать и готовить.

Вот несколько способов, чтобы расчистить выходные от домашних дел или существенно сократить время на эти занятия:

а) Составьте списки дел, назначьте ответственных и сроки. Всё как на работе. Это сэкономит несколько часов.

б) Не копите дела к выходным. Например, запустить стиралку можно вечером вторника.

в) Делегируйте. Остальным членам семьи, в том числе детям. Или профессионалам, но за деньги (окна могут помыть ребята из специальной конторы, например).

г) Закупайтесь продуктами в будни. Вспомните жуткие очереди и пробки по воскресеньям.

д) Пользуйтесь службами доставки (еда, бытовая химия, товары для животных).

4. Придумайте ритуалы

Ритуалы нужны не только для работы, но и для отдыха. Обычное действие от ритуала отличают детали. Сравните: жарить «готовый шашлык» из непонятно чего или самостоятельно выбирать хорошее мясо, мариновать его вместе с интересными специями, жарить на правильном мангале, подавать в красивой посуде.

Вот несколько идей:

а) Зрелища: кино, театр, футбол;

б) Удовольствия для тела: баня, массаж, спа;

в) Общение с природой: лес, река, море;

г) Спорт: велосипед, бадминтон, лыжи;

д) Игры: настолки, карты, шахматы;

е) Еда: шашлыки, торт.

5. Создайте свой ритм отпусков

Доктор Элайн Икер предупреждает, что нельзя отдыхать реже двух раз в год, иначе значительно возрастает риск инфаркта и депрессии. При этом отдыхать лучше понемногу, но чаще.

Варианты:

а) 2 недели летом + новогодние каникулы + ноябрьские и майские каникулы;

б) 2 недели + раскидать по одному дню на пятницы, чтобы получился долгий уик-энд;

в) менять климат: уезжать из зимы в лето.

Отгулять сразу месяц — плохая идея.

6. Чередуйте отдых и переключение

В отпуске чередуйте отдых и переключение. Отдых — это пассивный сценарий, например, валяться на пляже и читать книгу. Переключение — это активный вариант, дарящий яркие впечатления: исследовать памятники архитектуры, играть в волейбол.

Самое важное переключение должно произойти в начале отпуска — необходимо переключиться от работы. Поэтому сначала «накачиваем» себя переключениями, чтобы выбить из головы рабочие проблемы, потом отдыхаем пассивно, и так чередуем до конца отпуска.

Перед выходом на работу обязателен пассивный отдых, один или два дня. Иначе выйдете на работу разбитым, неотдохнувшим.

7. Про деньги

Хороший отдых — это необязательно дорого. Главное здесь — не соглашаться на первый же вариант из серии «всё включено».

а) Выбирайте более высокое качество за те же деньги. Заграничные курорты часто стоят столько же или дешевле, чем отечественные.

б) Постоянно ищите лайфхаки для отдыха. Экономить можно на всём: на перелётах, отелях, экскурсиях. Самое простое — покупать билеты заранее (на самолёты, концерты).

в) Продумывайте нестандартные сценарии. Например, отыщите варианты для отдыха за 3 евро в день, путешествуйте в несезон.

г) Сделайте что-то своими руками. Вспомните, может быть, вы любите рисовать или собирать грибы в лесу? Это почти бесплатно.

Если вы нашли опечатку или ошибку, выделите фрагмент текста, содержащий её, и нажмите Ctrl+


Выберите рассылку:

Нажимая на кнопку «Подписаться», вы соглашаетесь на передачу и обработку предоставленной
персональной информации в соответствии с условиями Политики конфиденциальности.

HTTP-методы — REST API Tutorial

REST API позволяют разрабатывать все виды веб-приложений со всеми возможными операциями CRUD (создание, извлечение, обновление, удаление).

Руководящие принципы REST предлагают использовать определенный метод HTTP для определенного типа вызова на сервер (хотя технически возможно нарушить это руководство, но это крайне не рекомендуется).

Используйте приведенную ниже информацию, чтобы найти подходящий метод HTTP для действия, выполняемого API.

 Содержание
HTTP ПОЛУЧИТЬ
HTTP-ПОСТ
HTTP ПОЛОЖИТЬ
HTTP УДАЛИТЬ
HTTP-патч
Резюме
Глоссарий 

1. HTTP GET

Используйте GET запросы только для получения представления/информации ресурса – и никоим образом не изменяйте его. Поскольку запросы GET не изменяют состояние ресурса, говорят, что это безопасных методов .

Кроме того, API GET должны быть идемпотентными. Выполнение нескольких идентичных запросов должно давать один и тот же результат каждый раз, пока другой API (POST или PUT) не изменит состояние ресурса на сервере.

Если Request-URI ссылается на процесс создания данных, именно произведенные данные должны быть возвращены как объект в ответе, а не исходный текст процесса, если только этот текст не является результатом процесса .

1.1. Коды ответов GET API

  • Для любого заданного HTTP GET API, если ресурс найден на сервере, он должен вернуть код ответа HTTP 200 (ОК) — вместе с телом ответа, которое обычно представляет собой XML или JSON. контент (из-за их независимой от платформы природы).
  • Если ресурс НЕ найден на сервере, API должен вернуть код ответа HTTP 404 (НЕ НАЙДЕН) .
  • Аналогичным образом, если будет установлено, что сам запрос GET сформирован неправильно, сервер вернет код ответа HTTP 400 (ПЛОХОЙ ЗАПРОС) .

1.2. Примеры URI

 HTTP GET http://www.appdomain.com/users
HTTP GET http://www.appdomain.com/users?size=20&page=5
HTTP GET http://www.appdomain.com/users/123
HTTP GET http://www.appdomain.com/users/123/адрес 

2. HTTP POST

Используйте POST API для создания новых подчиненных ресурсов , например, файл подчинен каталогу, содержащему его, или строка подчинена таблице базы данных.

Говоря строго о REST, методы POST используются для создания нового ресурса в наборе ресурсов.

Ответы на этот метод не подлежат кэшированию , если ответ не включает соответствующие поля заголовка Cache-Control или Expires.

Обратите внимание, что POST не является ни безопасным, ни идемпотентным , и вызов двух идентичных запросов POST приведет к тому, что два разных ресурса будут содержать одинаковую информацию (кроме идентификаторов ресурсов).

2.1. Коды ответов POST API

  • В идеале, если ресурс был создан на исходном сервере, ответ ДОЛЖЕН быть кодом ответа HTTP 201 (Создано) и содержать сущность, описывающую статус запроса и ссылающуюся на новый ресурс, и заголовок местоположения.
  • Во многих случаях действие, выполняемое методом POST, может не привести к получению ресурса, который можно идентифицировать по URI. В этом случае подходящим статусом ответа является либо код ответа HTTP 200 (ОК) , либо 204 (нет содержимого) .
2.2. Примеры URI
 HTTP POST http://www.appdomain.com/users
HTTP POST http://www.appdomain.com/users/123/accounts 

3. HTTP PUT

Используйте PUT API в первую очередь для обновления существующего ресурса (если ресурс не существует, API может решить создать новый ресурс или нет) .

Если запрос проходит через кеш, а Request-URI идентифицирует один или несколько объектов, находящихся в настоящее время в кеше, эти записи СЛЕДУЕТ рассматривать как устаревшие. Ответы на метод PUT не кэшируются .

3.1. Коды ответов PUT API

  • Если новый ресурс был создан с помощью PUT API, исходный сервер ДОЛЖЕН информировать пользовательский агент с помощью кода ответа HTTP 201 (Создано) .
  • Если существующий ресурс изменен, либо 200 (ОК) или 204 (Нет содержимого ) коды ответов ДОЛЖНЫ быть отправлены, чтобы указать на успешное выполнение запроса.
3.2. Примеры URI
 HTTP PUT http://www.appdomain.com/users/123
HTTP PUT http://www.appdomain.com/users/123/accounts/456 

Разницу между API POST и PUT можно наблюдать в URI запроса. Запросы POST выполняются для коллекций ресурсов, тогда как запросы PUT выполняются для одного ресурса.

4. HTTP УДАЛИТЬ

Как следует из названия, DELETE API удаляют ресурсы (идентифицируемые Request-URI).

Операции DELETE являются идемпотентными . Если вы УДАЛИТЕ ресурс, он будет удален из коллекции ресурсов.

Некоторые могут возразить, что это делает метод DELETE неидемпотентным. Это вопрос обсуждения и личного мнения.

Если запрос проходит через кеш, а Request-URI идентифицирует один или несколько объектов, находящихся в настоящее время в кеше, эти записи СЛЕДУЕТ рассматривать как устаревшие. Ответов на этот метод не кэшируется .

4.1. Коды ответов DELETE API

  • Успешным ответом на запросы DELETE СЛЕДУЕТ быть ответ HTTP с кодом 200 (ОК) , если ответ включает объект, описывающий состояние.
  • Статус должен быть 202 (Принято) , если действие поставлено в очередь.
  • Статус должен быть 204 (Нет содержимого) , если действие было выполнено, но ответ не включает сущность.
  • Повторный вызов DELETE API для этого ресурса не изменит результат, однако повторный вызов DELETE для ресурса вернет ошибку 404 (НЕ НАЙДЕН), поскольку он уже был удален.

4.2. Примеры URI

 HTTP DELETE http://www.appdomain.com/users/123
HTTP DELETE http://www.appdomain.com/users/123/accounts/456 

5. HTTP PATCH

HTTP PATCH запросы для частичного обновления ресурса.

Если вы видите, что запросы PUT также изменяют сущность ресурса. То есть, чтобы быть более точным, метод PATCH является правильным выбором для частичного обновления существующего ресурса, и вы должны использовать PUT только в том случае, если вы полностью заменяете ресурс.

Обратите внимание, что если вы решите использовать PATCH API в своем приложении, возникнут некоторые проблемы:

Поддержка PATCH в браузерах, серверах и платформах веб-приложений не универсальна. IE8, PHP, Tomcat, Django и многие другие программы не поддерживают его или не поддерживают.

Полезная нагрузка запроса PATCH не так проста, как для запроса PUT. например

 HTTP GET /users/1 

дает следующий ответ:

 { "id": 1, "username": "admin", "email": "[email protected]"} 

Пример запроса исправления для обновления электронной почты будет выглядеть следующим образом:

 HTTP PATCH /users/1
[{ "op": "replace", "path": "/email", "value": "[email protected]" }] 

Возможны следующие операции в соответствии со спецификацией HTTP.

 [
 { "op": "тест", "путь": "/a/b/c", "значение": "foo" },
 { "op": "удалить", "путь": "/a/b/c" },
 { "op": "добавить", "path": "/a/b/c", "value": [ "foo", "bar" ] },
 { "op": "заменить", "path": "/a/b/c", "value": 42 },
 { "op": "переместить", "из": "/a/b/c", "путь": "/a/b/d" },
 { "op": "копировать", "из": "/a/b/d", "путь": "/a/b/e" }
 ] 

Метод PATCH не заменяет методы POST или PUT. Он применяет дельту (diff), а не заменяет весь ресурс.

6. Обзор HTTP-методов

В таблице ниже приводится сводка использования HTTP-методов, рассмотренных выше.

HTTP Method

CRUD

Collection Resource (e.g. /users)

Single Resouce (e.g. /users/123)

POST

Create

201 (созданный), ‘Locate’ CHEEDER с Link /{ID traing Oning Oning Oning Oning Oning Oning Oning Oning Oning Oning Kneaing On News

2012 (Created). один ресурс

GET

Чтение

g. /users)»>

200 (ОК), список пользователей. Используйте разбиение на страницы, сортировку и фильтрацию для навигации по большим спискам

200 (ОК), один пользователь. 404 (не найдено), если идентификатор не найден или недействителен. ресурса

200 (ОК) или 204 (Нет содержимого). Используйте 404 (не найдено), если идентификатор не найден или недействителен0002 Частичное обновление/изменение

405 (Метод не разрешен), если только вы не хотите изменить саму коллекцию

200 (ОК) или 204 (Нет содержимого). Используйте 404 (Not Found), если ID не найден или недействителен

DELETE

Delete

g. /users)»>

405, если вы не хотите использовать всю коллекцию, если вы не хотите использовать всю коллекцию, осторожность

200 (ОК). 404 (не найдено), если идентификатор не найден или недействителен

7. Глоссарий

7.1. Безопасные методы

Методы запросов считаются безопасными , если их определенная семантика по существу доступна только для чтения. Клиент не запрашивает и не ожидает каких-либо изменений состояния на исходном сервере в результате применения безопасного метода к целевому ресурсу.

Методы GET, HEAD, OPTIONS и TRACE считаются безопасными методами . Согласно спецификации HTTP, методы GET и HEAD следует использовать только для получения представлений ресурсов, и они не обновляют/удаляют ресурс на сервере.

Цель разграничения безопасных и небезопасных методов состоит в том, чтобы позволить автоматизированным процессам поиска (паукам) и оптимизации производительности кэша (предварительной выборке) работать, не опасаясь причинения вреда.

Безопасные методы позволяют пользовательским агентам представлять другие методы, такие как POST, PUT и DELETE , уникальным образом, чтобы пользователь был осведомлен о том, что запрашивается возможно небезопасное действие, и они могут обновлять/ удалить ресурс на сервере и поэтому следует использовать осторожно.

7.2. Идемпотентные методы

Термин идемпотент используется в более широком смысле для описания операции, которая даст одинаковые результаты при однократном или многократном выполнении .

В спецификации HTTP методы PUT, DELETE и безопасные ( GET, HEAD, OPTIONS, TRACE ) являются идемпотентными методами .

Идемпотентность — удобное свойство во многих ситуациях, поскольку оно означает, что операцию можно повторять или повторять столько раз, сколько необходимо, не вызывая непреднамеренных эффектов.

Для неидемпотентных операций алгоритму может потребоваться отслеживать, была ли операция уже выполнена или нет.

Как и определение безопасных методов , свойство идемпотента применяется только к тому, что было запрошено пользователем; сервер может регистрировать каждый запрос отдельно или сохранять историю контроля версий.

Ссылки:

https://www.w3.org/Protocols/rfc2616/rfc2616.txt
http://tools.ietf.org/html/rfc6902
https://en.wikipedia.org/wiki/ Идемпотентность#Computer_science_meaning

Как спроектировать REST API

Изучение REST по частям — это одно, а применение всех этих концепций к реальной разработке приложений — совершенно другая задача.

Этот учебник научит нас разрабатывать REST API для сетевого приложения. Обратите внимание, что вывод из всего этого упражнения заключается в изучении того, как применять принципы REST в процессе разработки приложений .

1. Идентификация ресурсов – объектное моделирование

Первым шагом в разработке приложения на основе REST API является определение объектов, которые будут представлены как ресурсов .

Для сетевого приложения объектное моделирование намного проще. Может быть много вещей, таких как устройств, управляемых объектов, маршрутизаторов, модемов и т. д. Для простоты мы рассмотрим только два ресурса, т.е.

  • Устройства
  • Конфигурации

Устройство. Устройство может иметь множество параметров конфигурации.

Обратите внимание, что оба объекта/ресурса в нашей приведенной выше модели будут иметь уникальный идентификатор, который является целочисленным свойством id .

2. Создать URI модели

Теперь, когда объектная модель готова, пришло время определить URI ресурсов. На этом этапе при разработке URI ресурсов сосредоточьтесь на отношениях между ресурсами и их подресурсами. Эти URI ресурсов являются конечными точками для API .

В нашем приложении устройство является ресурсом верхнего уровня. А конфигурация — это подресурс под устройство. Давайте запишем URI.

 /устройства
/устройства/{идентификатор}
/конфигурации
/конфигурации/{id}
/устройства/{id}/конфигурации
/devices/{id}/configurations/{configId} 

Обратите внимание, что эти URI не используют никаких глаголов или операций . Крайне важно не включать никакие глаголы в URI. Все URI должны быть только существительными .

3. Определение представлений ресурсов

Теперь, когда определены URI ресурсов, давайте поработаем над их представлениями. Большинство представлений определяются в формате XML или JSON. Мы увидим примеры XML, так как они лучше отражают то, как составляются данные.

3.1. Ресурс коллекции устройств

При возврате ресурса коллекции включите только самую важную информацию об этом ресурсе. Это сохранит небольшой размер полезной нагрузки ответа и, таким образом, повысит производительность API .

 <размер устройств = "2">

<устройство>

apple-es
<Версия ОС>10.3R2.11
<платформа>SRX100B
<серийный номер>32423457
up
192.168.21. 9
яблоко-srx_200
<статус>активен

<устройство>

apple-es
<Версия ОС>10.3R2.11
<платформа>SRX100B
<серийный номер>6453534
up
192.168.20.23
яблоко-srx_200
<статус>активен

 

3.2. Ресурс одного устройства

В отличие от URI коллекции, URI единого ресурса включает полную информацию о конкретном устройстве. Он также включает список ссылок на подресурсы и другие поддерживаемые операции. Это сделает ваш REST API HATEOAS управляемым.

 <устройство>

12345
apple-es
<Версия ОС>10.0R2.10
<платформа>SRX100-LM
<серийный номер>32423457
apple-srx_100_lehar
apple-srx_100_lehar
192. 168.21.9
<статус>активен
<размер конфигурации = "2">

<конфигурация>


<конфигурация>



<метод href="/devices/12345/exec-rpc" rel="rpc"/>

 

3.3. Ресурс коллекции конфигураций

Подобно представлению коллекции устройств, создайте представление коллекции конфигураций с минимальной информацией.

 <размер конфигурации = "20">

<конфигурация>


<конфигурация>


…
…
 

Обратите внимание, что представление коллекции конфигураций внутри устройства аналогично URI конфигураций верхнего уровня .

Единственное отличие состоит в том, что конфигураций для устройства всего две, поэтому только два элемента конфигурации указаны как подресурсы под устройством.

3.4. Единый ресурс конфигурации

Теперь представление единого ресурса конфигурации должно содержать всю возможную информацию об этом ресурсе, включая соответствующие ссылки.

 <конфигурация>


<статус>активен

 

3.5. Ресурс коллекции конфигурации для одного устройства

Этот поднабор конфигураций будет подмножеством основного набора конфигураций и будет характерен только для устройства.

Поскольку это подмножество первичной коллекции, НЕ создавайте поля данных представления, отличные от основной коллекции. Используйте те же поля презентации, что и в основной коллекции.

 <размер конфигурации = "2">

<конфигурация>



<конфигурация>



 

Обратите внимание, что эта коллекция вложенных ресурсов имеет две ссылки. Один для его прямого представления внутри подколлекции, т. е. /devices/12345/configurations/333443 , а другой указывает на его местоположение в основной коллекции , т. е. /configurations/333443 .

Наличие двух ссылок имеет важное значение, так как вы можете предоставить доступ к конфигурации конкретного устройства более уникальным образом, и у вас будет возможность маскировать некоторые поля (если этого требует дизайн), которые не должны быть видны в вторичный сбор .

3.6. Единый ресурс конфигурации на одном устройстве

Это представление должно иметь точно такое же представление, как и представление конфигурации из основной коллекции, ИЛИ вы можете замаскировать несколько полей.

Это представление подресурса также будет иметь дополнительную ссылку на его основное представление.

 <конфигурация>



<статус>активен

 

Теперь, прежде чем перейти к следующему разделу, давайте запишем несколько наблюдений, чтобы вы их не пропустили.

  • Все URI ресурсов являются существительными.
  • URI обычно бывают двух видов — набор ресурсов и отдельный ресурс.
  • Сбор может быть двух видов: первичный сбор и вторичный сбор. Вторичная коллекция — это вложенная коллекция только из первичной коллекции.
  • Каждый ресурс/коллекция содержит хотя бы одну ссылку, т.е. на себя.
  • Коллекции содержат только самую важную информацию о ресурсах.
  • Чтобы получить полную информацию о ресурсе, вам необходимо получить доступ только к его конкретному URI ресурса.
  • Представления могут иметь дополнительные ссылки (т.е. методы в одном устройстве). Здесь метод представляет метод POST. Вы также можете иметь больше атрибутов или формировать ссылки совершенно по-новому.
  • Мы еще не говорили об операциях на этих ресурсах.

4. Назначение методов HTTP

Таким образом, URI наших ресурсов и их представление теперь фиксированы. Давайте определим все возможные операции приложений и сопоставим эти операции с URI ресурсов.

Например, пользователь нашего сетевого приложения может просматривать, создавать, обновлять или удалять устройства из сети, а также создавать/развертывать/удалять конфигурации устройств. Итак, давайте назначим эти операции соответствующим ресурсам.

4.1. Просмотреть все устройства или конфигурации [Основная коллекция]

 HTTP GET /devices
HTTP GET/конфигурации 

Если размер коллекции большой, можно также применить разбиение по страницам и фильтрацию. например, приведенные ниже запросы будут извлекать первые 20 записей из коллекции.

 HTTP GET /devices?startIndex=0&size=20
HTTP GET /configurations?startIndex=0&size=20 

4.2. Просмотр всех конфигураций устройства [Дополнительная коллекция]

 HTTP GET /devices/{id}/configurations 

В основном это будет небольшая коллекция, поэтому здесь нет необходимости включать фильтрацию или сортировку.

4.3. Просмотр отдельного устройства или конфигурации

Чтобы получить полную информацию об устройстве или конфигурации, используйте операцию GET для отдельных URI ресурсов.

 HTTP GET /устройства/{id}
HTTP GET /configurations/{id} 

4.4. Просмотр одной конфигурации под устройством

 HTTP GET /devices/{id}/configurations/{configId} 

Представление подресурса будет либо таким же, либо подмножеством основного представления.

4.5. Создание устройства или конфигурации

CREATE не является идемпотентной операцией, а в протоколе HTTP — POST также не является идемпотентной. Так что используйте POST.

 HTTP POST /устройства
HTTP POST /configurations 

Обратите внимание, что полезная нагрузка запроса не будет содержать никаких атрибутов id , так как за это отвечает сервер. Ответ на запрос CREATE будет выглядеть так:

 HTTP/1.1 201 Created
Тип содержимого: приложение/xml
Расположение: http://example.com/network-app/configurations/678678.
<конфигурация>


<статус>активен

 

4.6. Обновление устройства или конфигурации

Операция обновления является идемпотентной операцией, и HTTP PUT также является идемпотентным методом. Таким образом, мы можем использовать метод PUT для операций обновления.

 HTTP PUT /devices/{id}
HTTP PUT /configurations/{id} 

Ответ PUT может выглядеть следующим образом.

 HTTP/1.1 200 ОК
Тип содержимого: приложение/xml
<конфигурация>


<статус>активен

 

4.7. Удаление устройства или конфигурации

Удаление всегда является операцией DELETE .

 HTTP УДАЛИТЬ /devices/{id}
HTTP DELETE /configurations/{id} 

Успешный ответ ДОЛЖЕН быть 202 (Принято) , если ресурс поставлен в очередь на удаление (асинхронная операция), или 200 (ОК)/204 (Нет содержимого), если ресурс был удалены безвозвратно (операция синхронизации).

В случае асинхронной операции приложение должно возвращать идентификатор задачи, по которому можно отслеживать состояние успеха/неудачи.

Обратите внимание, что вы должны провести достаточный анализ при принятии решения о поведении, когда подресурс удаляется из системы. Обычно вы можете захотеть SOFT DELETE ресурс в этих запросах — другими словами, установить их статус НЕАКТИВНО.

Следуя этому подходу, вам не нужно будет искать и удалять его ссылки из других мест.

4.8. Применение или удаление конфигурации на/с устройства

В реальном приложении вам потребуется применить конфигурацию на устройстве – ИЛИ вы можете удалить конфигурацию с устройства (не из основной коллекции). В этом случае вы должны использовать методы PUT и DELETE из-за их идемпотент природа.

 //Применить конфигурацию на устройстве
HTTP PUT /devices/{id}/configurations
//Удалить конфигурацию на устройстве
HTTP DELETE /devices/{id}/configurations/{configId} 

5. Дополнительные действия

Пока что мы разработали только объектные модели и URI, а затем определились с HTTP-методами или операциями с ними.