Как научиться отдыхать от работы


Как научиться правильно отдыхать - Лайфхакер

Эту статью можно послушать. Если вам так удобнее, включайте подкаст.

Мойя Сарнер, британская журналистка и колумнист The Guardian, уверена, что многие из нас забыли, как правильно и эффективно отдыхать. И решила разобраться, как это исправить.

Проанализируйте время, которое вы проводите перед экраном

В нашем мире, который постоянно находится в режиме онлайн, расслабиться становится всё труднее. Сама Мойя признаётся, что впервые всерьёз задумалась об этом после того, как ей пришлось бросить занятия спортом из-за травмы.

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

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

Мойя Сарнер

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

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

Гвен Стефани в свою очередь сообщила журналу Stylist, что если у неё случаются простои в работе, она ощущает небольшую панику и пытается спланировать, чем заняться дальше. А когда у Илона Маска спросили, что он обычно делает после работы, он ответил: «Обычно — продолжаю работать».

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

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

Отчёт британского регулятора связи Ofcom 2018 года подтверждает , что огромное количество людей зависит от своих цифровых устройств и нуждается в постоянном доступе к интернету.

У 78% есть смартфон, а среди молодёжи 16–24 лет это число возрастает до 95%. Мы проверяем телефон каждые 12 минут, хотя больше половины признаёт, что это мешает общению с родными и друзьями. И 43% соглашается, что слишком много времени проводит за устройствами. 7 из 10 вообще никогда их не выключают.

Устройства мешают нам отдыхать, но и без них нам сложно расслабиться.

Клинический психолог Рэйчел Эндрю отмечает, что каждый день сталкивается с этой проблемой в своём кабинете терапии, и дела становятся всё хуже. «В своей практике я заметила, что число людей, которым тяжело отключиться от всего и расслабиться, растёт, особенно в последние 3–5 лет. Это касается всех возрастов от 12 до 70 лет».

В ленивом отдыхе перед экраном телевизора или со смартфоном в руках, в общем-то, нет ничего плохого, говорит Рэйчел. Но всё зависит от того, как именно вы это делаете.

«Иногда люди признаются, что даже не вникают в возникающее у них перед глазами. Они полностью абстрагируются, не понимая, чем занимались последние полчаса. Это можно рассматривать почти как диссоциацию — периоды, когда мозг настолько истощён и перегружен, что полностью отключается от происходящего. Конечно, такой отдых мозгу мало помогает».

Мойя Сарнер говорит, что после вечеров, полностью посвящённых Twitter или сериалу, просыпалась с таким чувством, будто наелась вредной еды перед сном. И дело в том, что она путала ощущение полного отключения мозга с настоящим расслаблением.

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

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

Дэвид Морган

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

Задумайтесь о своих истинных желаниях

Рэйчел Эндрю рассказывает, что некоторые из её пациентов вообще никогда не задумывались о том, как бы они хотели провести свободное время.

«Они говорят, что слишком заняты выполнением своих обязанностей — работой, заботой о семье и вынужденным поддержанием дружеских связей. К вечеру или выходным наступает время, когда они могут делать что угодно, но у них уже не остаётся ни сил, ни мотивации на какие-либо дела, кроме „выпадения из реальности“». Но как жизнь может доставлять удовольствие, если всё время делать только то, что обязан?

Для других же, по мнению Рэйчел, идея прислушиваться к своим потребностям и желаниям абсолютно чужда. У воспитанных в семье, где всё было сосредоточено вокруг потребностей другого ребёнка или родителя, возможно, никогда и не спрашивали, чем бы они сами хотели заняться. И нет ничего удивительного, что раньше они могли и не задумываться об этом.

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

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

Нина Грюнфельд, основатель Life Clubs — организации, помогающей людям жить полноценной жизнью.

«Когда мы с мужем были ещё молоды, мы поехали в отпуск в Рим», — рассказывает Нина. «Он хотел посетить каждый храм, каждый ресторан, каждое интересное ему место. А я возвращалась домой полностью разбитой. Только после того, как разобралась в себе, обдумала свою жизнь в отдельности и то, что нравится лично мне, я поняла: чтобы насладиться отпуском и вернуться домой свежей и полной сил, мне нужен спокойный отдых и чтение.

Теперь же, когда мы выбираемся в отпуск, муж ходит по храмам один, а я чувствую себя действительно счастливой, лёжа на пляже, у бассейна или у камина с книгой. Для меня это и есть настоящее удовольствие. Ну а в ресторане я могу к нему присоединиться».

Попросите помощи

Мойя Сарнер сообщает, что уже начала пользоваться всеми идеальными правилами, но иногда всё же чувствует себя уставшей от мира.

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

Мойя Сарнер

Она говорит, что задуматься о причинах, почему так происходит, ей помогает психоаналитическая терапия. Дэвид Морган тоже согласен, что психотерапия очень важна в процессе избавления от интернет-зависимости, поскольку на консультациях человеку приходится использовать свой разум.

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

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

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

Дэвид Морган

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

Следуйте практическим советам

1. Введите правило одного часа. Нина Грюнфельд рекомендует во время праздников с друзьями или семьёй закрепить за каждым человеком целый час, в течение которого он может решать, чем все будут заниматься, чтобы отдохнуть. «Один мой ребёнок скажет, что мы будем играть в видеоигры, другой — что пойдём гулять, а третий заставит всех печь пироги. Таким образом каждый получает немного „своего“ времени и пробует чужие способы отдохнуть. Очень расслабляет, когда не нужно самому планировать весь свой день».

2. Постарайтесь вспомнить, что в детстве вам нравилось делать больше всего. Определите, что было для вас самым важным в этом занятии и попробуйте придумать его «взрослую версию». Если вы уже не помните этого, нужно расспросить друзей и родных или просмотреть старые фотографии.

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

3. Выберитесь на природу. Рэйчел Эндрю говорит: «Если вы понятия не имеете, какой же способ поможет вам расслабляться, доверьтесь науке. Всё больше исследователей сходится во мнении, что пребывание на природе поднимает настроение и заряжает энергией».

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

Читайте также 🧐

Понимание и использование REST API - Smashing Magazine

Если вы хотите иметь возможность читать документацию по API и эффективно использовать ее, вам сначала нужно понять все о REST API. Давайте начнем.

Есть большая вероятность, что вы встретили термин «REST API», если задумывались о получении данных из другого источника в Интернете, например Twitter или Github. Но что такое REST API? Что это может для вас сделать? Как Вы этим пользуетесь?

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

Что такое REST API

Допустим, вы пытаетесь найти видео о Бэтмене на Youtube. Вы открываете Youtube, набираете «Бэтмен» в поле поиска, нажимаете Enter и видите список видео о Бэтмене. Аналогичным образом работает REST API. Вы что-то ищете и получаете список результатов от службы, из которой запрашиваете.

API - это интерфейс прикладного программирования. Это набор правил, которые позволяют программам общаться друг с другом. Разработчик создает API на сервере и позволяет клиенту общаться с ним.

REST определяет, как выглядит API. Это расшифровывается как «Передача состояния представительства». Это набор правил, которым следуют разработчики при создании своего API. Одно из этих правил гласит, что вы должны иметь возможность получать часть данных (называемую ресурсом), когда вы ссылаетесь на определенный URL.

Каждый URL-адрес называется запросом , а данные, отправленные вам обратно, называются ответом .

Анатомия запроса

Важно знать, что запрос состоит из четырех частей:

  1. Конечная точка
  2. Метод
  3. Заголовки
  4. Данные (или тело)

Конечная точка (или маршрут) - это URL-адрес, который вы запрашиваете.Это следующая структура:

  root-endpoint /?  

Корневая конечная точка - это отправная точка API, из которого вы запрашиваете. Конечная корневая точка API Github - https://api.github.com , а API Твиттера - https://api.twitter.com .

Путь определяет ресурс, который вы запрашиваете. Думайте об этом как об автоответчике, который просит вас нажать 1 для услуги, нажать 2 для другой услуги, 3 для еще одной услуги и так далее.

Вы можете получить доступ к путям так же, как вы можете ссылаться на части веб-сайта. Например, чтобы получить список всех сообщений с тегами «JavaScript» в Smashing Magazine, перейдите по адресу https://www.smashingmagazine.com/tag/javascript/ . https://www.smashingmagazine.com/ - корневая конечная точка, а / tag / javascript - путь.

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

  / users /: username / repos  

Любые двоеточия (: ) на пути обозначают переменную. Вы должны заменить эти значения фактическими значениями на момент отправки вашего запроса. В этом случае вам следует заменить : username фактическим именем пользователя, которого вы ищете. Если я ищу свою учетную запись Github, я заменяю : username на zellwk .

Конечная точка для получения списка моих репозиториев на Github:

  https: // api.github.com/users/zellwk/repos  

Последняя часть конечной точки - это параметров запроса . Технически параметры запроса не являются частью архитектуры REST, но вы увидите, что многие API используют их. Итак, чтобы помочь вам полностью понять, как читать и использовать API, мы также поговорим о них. Параметры запроса дают вам возможность изменить ваш запрос парами ключ-значение. Они всегда начинаются с вопросительного знака (? ). Каждая пара параметров затем разделяется амперсандом ( и ), например:

 ? Query1 = value1 & query2 = value2.  

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

Github позволяет вам добавить три параметра в ваш запрос

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

  https://api.github.com/users/zellwk/repos?sort=pushing  

Как узнать, работает ли эта конечная точка? Что ж, пора попробовать!

Тестирование конечных точек с помощью curl

Вы можете отправить запрос на любом языке программирования. Пользователи JavaScript могут использовать такие методы, как Fetch API и метод JQuery Ajax; Пользователи Ruby могут использовать класс Ruby Net :: HTTP, пользователи Python могут использовать запросы Python; и так далее.

В этой статье мы будем использовать утилиту командной строки cURL.Мы используем cURL, потому что документация API обычно пишется со ссылкой на cURL. Если вы понимаете, как использовать cURL, у вас не будет проблем с пониманием документации API. Затем вы можете легко выполнять запросы на предпочитаемом вами языке.

Прежде чем продолжить, убедитесь, что на вашем компьютере установлен cURL. Откройте свой терминал и введите curl -version . Эта команда проверяет версию cURL, установленную в вашей системе.

  curl - версия  

Если у вас не установлен cURL, вы получите ошибку «команда не найдена».Если вы получили эту ошибку, вам нужно будет установить curl, прежде чем двигаться дальше.

Чтобы использовать cURL, введите curl , за которым следует конечная точка, которую вы запрашиваете. Например, чтобы получить корневую конечную точку Github, введите следующее:

  curl https://api.github.com  

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

Ответ от корневой конечной точки Github

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

  curl https://api.github.com/users/zellwk/repos  

Если вы хотите включить параметры запроса в cURL, убедитесь, что вы добавили обратная косая черта ( \ ) перед ? и = символов. Это потому что ? и = - специальные символы в командной строке. Вам необходимо использовать перед ними \ , чтобы командная строка интерпретировала их как обычные символы:

  curl https: // api.github.com/users/zellwk/repos\?sort\=pressed  

Попробуйте использовать любую из команд и выполните запрос! Вы получите ответ, аналогичный тому, что вы видели, с root-endpont Github (но с гораздо большим количеством данных).

JSON

JSON (нотация объектов JavaScript) распространенный формат для отправки и запроса данных через REST API. Ответ, который Github отправляет вам, также имеет формат JSON.

Объект JSON выглядит как объект JavaScript. В JSON каждое свойство и значение должны быть заключены в двойные кавычки, например:

  { "свойство1": "значение1", "свойство2": "значение2", "свойство3": "значение3" }  

Назад к анатомии запроса

Вы узнали, что запрос состоит из четырех частей.

  1. Конечная точка
  2. Метод
  3. Заголовки
  4. Данные (или тело)

Давайте рассмотрим остальную часть того, что составляет запрос.

Метод

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

Эти методы обеспечивают смысл отправляемого вами запроса. Они используются для выполнения четырех возможных действий: Создать , Прочитать , Обновить и Удалить (CRUD).

Имя метода Значение запроса
`GET` Этот запрос используется для получения ресурса с сервера. Если вы выполняете запрос GET, сервер ищет запрошенные вами данные и отправляет их вам. Другими словами, запрос GET выполняет операцию READ. Это метод запроса по умолчанию.
`POST` Этот запрос используется для создания нового ресурса на сервере. Если вы выполняете запрос POST, сервер создает новую запись в базе данных и сообщает вам, было ли создание успешным.Другими словами, запрос POST выполняет операцию CREATE.
PUT и PATCH Эти два запроса используются для обновления ресурса на сервере. Если вы выполняете запрос PUT или PATCH, сервер обновляет запись в базе данных и сообщает вам, было ли обновление успешным. Другими словами, запрос PUT или PATCH выполняет операцию UPDATE.
`DELETE` Этот запрос используется для удаления ресурса с сервера.Если вы выполняете запрос DELETE, сервер удаляет запись в базе данных и сообщает вам, было ли удаление успешным. Другими словами, запрос DELETE выполняет операцию DELETE.

API позволяет узнать, какой метод запроса использовать для каждого запроса. Например, чтобы получить список репозиториев пользователя, вам нужен запрос GET :

Запрос GET необходим для получения списка репозиториев от пользователя

Запрос GET необходим для получения списка репозиториев от пользователя .Чтобы создать новый репозиторий Github, вам нужен запрос POST :

Запрос POST требуется для создания нового репозитория

Вы можете установить метод запроса в cURL, написав -X или --request , а затем метод запроса. Эта команда ниже пытается создать репозиторий через cURL:

  curl -X POST https://api.github.com/user/repos  

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

  { "message": "Требуется аутентификация", "documentation_url": "https://developer.github.com/v3" }  

Заголовки

Заголовки используются для предоставления информации как клиенту, так и серверу. Его можно использовать для многих целей, например для аутентификации и предоставления информации о содержимом тела. Вы можете найти список допустимых заголовков в Справочнике по HTTP-заголовкам MDN.

Заголовки HTTP - это пары свойства-значения, разделенные двоеточием.В приведенном ниже примере показан заголовок, который сообщает серверу ожидать содержимого JSON.

  «Content-Type: application / json». Отсутствует открытие ».  

Вы можете отправлять заголовки HTTP с помощью curl с помощью параметра -H или --header . Чтобы отправить приведенный выше заголовок в API Github, используйте эту команду:

  curl -H "Content-Type: application / json" https://api.github.com  

(Примечание: заголовок Content-Type не является обязательным требованием для работы API Github.Это только пример, чтобы проиллюстрировать, как использовать заголовок с cURL).

Для просмотра отправленных заголовков можно использовать параметр -v или --verbose при отправке запроса, например:

  curl -H "Content-Type: application / json" https : //api.github.com -v  
cURL сообщает вам дополнительную информацию, которая включает заголовки, когда вы используете подробный параметр.

Здесь * относится к дополнительной информации, предоставляемой cURL. > относится к заголовкам запроса, а < относится к заголовкам ответов.

Данные (или «тело»)

Данные (иногда называемые «телом» или «сообщением») содержат информацию, которую вы хотите отправить на сервер. Эта опция используется только с запросами POST , PUT , PATCH или DELETE .

Для отправки данных через cURL вы можете использовать опцию -d или --data :

  curl -X POST  -d property1 = value1  

Чтобы отправить несколько полей данных, вы можете создать несколько опций -d :

  curl -X POST  -d property1 = value1 -d property2 = value2  

Если это имеет смысл, вы можете разбить свой запрос на несколько строк \ , чтобы его было легче читать:

  curl -X POST  \ -d свойство1 = значение1 \ -d свойство2 = значение2  

Если вы знаете, как раскрутить сервер, вы можете создать API и протестировать свои собственные данные.Если вы не знаете, но чувствуете себя достаточно смелым, чтобы попробовать, вы можете изучить эту статью, чтобы научиться создавать сервер с помощью Node, Express и MongoDB

. Если вы не хотите раскручивать свой сервер, вы можете перейти к Requestbin.com ( это бесплатно! ) и нажмите «создать конечную точку». Вам будет предоставлен URL-адрес, который можно использовать для тестирования запросов, например https://requestb.in/1ix963n1 , показанный на рисунке ниже.

Корзина запросов дает вам уникальный URL-адрес, который можно использовать в течение 48 часов.

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

Теперь попробуйте отправить данные в корзину запросов, а затем обновите веб-страницу своей корзины. Вы увидите некоторые данные, например:

  curl -X POST https://requestb.in/1ix963n1 \ -d свойство1 = значение1 \ -d свойство2 = значение2  
Запросы, которые вы отправили в корзину, будут выглядеть так.

По умолчанию cURL отправляет данные так, как если бы они отправлялись через «поля формы» на странице.Если вы хотите отправить данные JSON, вам нужно установить Content-Type на application / json , и вам нужно будет отформатировать свои данные как объект JSON, например:

  curl -X ЗАПИСЬ https://requestb.in/1ix963n1 \ -H "Content-Type: application / json" \ -d '{ "свойство1": "значение1", "свойство2": "значение2" } '  
Отправка данных в формате JSON

И это (почти!) Все, что вам нужно знать о структуре запроса.

Теперь, помните, когда вы пытались отправить запрос POST через API Github, вы получили сообщение «Требуется аутентификация»? Это потому, что у вас нет прав на выполнение запроса POST !

Аутентификация

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

Поскольку запросы POST , PUT , PATCH и DELETE изменяют базу данных, разработчики почти всегда помещают их за стеной аутентификации. В некоторых случаях запрос GET также требует аутентификации (например, когда вы получаете доступ к своему банковскому счету для проверки текущего баланса).

В Интернете есть два основных способа аутентификации:

  1. С помощью имени пользователя и пароля (также называемая базовой аутентификацией)
  2. С секретным токеном

Метод секретного токена включает oAuth, который позволяет вам аутентифицироваться себя в социальных сетях, таких как Github, Google, Twitter, Facebook и т. д.

В этой статье вы научитесь использовать только базовую аутентификацию с помощью имени пользователя и пароля. Если вы заинтересованы в аутентификации с помощью oAuth, я предлагаю прочитать Зак Гроссбарт «Что нужно знать об OAuth3 и входе в систему с помощью Facebook».

Для выполнения базовой аутентификации с помощью cURL вы можете использовать опцию -u , за которой следует ваше имя пользователя и пароль, например:

  curl -x POST -u "username: password" https: // api. github.com/user/repos  

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

Это связано с тем, что вы еще не предоставили серверу какие-либо данные (которые требуются для всех запросов POST , PUT , PATCH и DELETE ).

С уже полученными знаниями вы сможете редактировать приведенный выше код для создания репозитория Github через ваш cURL. Я бы позволил вам попробовать самому!

Теперь поговорим о кодах состояния HTTP и сообщениях об ошибках.

Коды состояния и сообщения об ошибках HTTP

Некоторые сообщения, полученные вами ранее, например «Требуется аутентификация» и «Проблемы с анализом JSON», являются сообщениями об ошибках. Они появляются только тогда, когда с вашим запросом что-то не так. Коды состояния HTTP позволяют быстро определить статус ответа. Диапазон от 100+ до 500+. Как правило, числа соответствуют следующим правилам:

  1. 200+ означает, что запрос завершился успешно .
  2. 300+ означает, что запрос перенаправлен на другой URL-адрес
  3. 400+ означает, что произошла ошибка , которая исходит от клиента произошла
  4. 500+ означает ошибку , которая исходит от сервера произошло

Вы можете отладить статус ответа с помощью подробного параметра ( -v или --verbose ) или параметра заголовка ( -I или --head ).

Например, если вы попытались добавить -I в запрос POST без указания имени пользователя и пароля, вы получите код состояния 401 (Неавторизованный):

Пример неавторизованного запроса

Если ваш запрос недействителен поскольку ваши данные неверны или отсутствуют, вы обычно получаете код состояния 400 (неверный запрос).

Пример неверного запроса

Чтобы получить дополнительную информацию о конкретных кодах состояния HTTP, вы можете обратиться к справочнику по состоянию HTTP MDN.

Версии API

Разработчики время от времени обновляют свои API.Иногда API может так сильно измениться, что разработчик решает обновить свой API до другой версии. Если это происходит и ваше приложение выходит из строя, обычно это происходит из-за того, что вы написали код для более старого API, но ваш запрос указывает на новый API.

Вы можете запросить конкретную версию API двумя способами. Какой способ вы выберете, зависит от того, как написан API.

Это два способа:

  1. Непосредственно в конечной точке
  2. В заголовке запроса

Twitter, например, использует первый метод.На момент написания API Twitter был версии 1.1, о чем свидетельствует его конечная точка:

  https://api.twitter.com/1.1/account/settings.json.  

Github, с другой стороны, использует второй метод. На момент написания API Github имеет версию 3, и вы можете указать версию с заголовком Accept :

  curl https://api.github.com -H Accept: application / vnd.github.v3 + json  

Завершение

В этой статье вы узнали, что такое REST API и как использовать cURL для выполнения запроса с помощью методов GET , POST , PUT , PATCH и DELETE .Кроме того, вы также узнали, как аутентифицировать свои запросы с помощью параметра -u и что означают статусы HTTP.

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

(рб, ра, ил).

Лучшие способы отдыха

GETTY

Изучение искусства отдыха и релаксации может помочь нам работать лучше и повысить производительность

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

Современный сотрудник склонен рассматривать чрезмерную работу как знак чести - отношение, которое проникает в нашу социальную жизнь, по словам доктора Алекса Суджунг-Ким Панга, который считает это большой ошибкой.

«Мы обновляем и проверяем Facebook с той же степенью срочности и эффективности, что и в нашей рабочей жизни», - предупреждает он.

И в результате мы забыли о важности отдыха и расслабления.

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

«Отдых - это не просто отсутствие работы - ничто», - сказал он во время визита в Великобританию.«Это то, что мы должны сделать - выключиться, чтобы противостоять соблазну занятости.

«Технология, с которой мы живем, обещала позволить нам разделить эти восемь часов работы на части, которые мы могли бы выполнять в удобное для нас время: пара часов работы, затем время с детьми и приготовление ужина, а затем возвращение к работа », - говорит он. «Но он не превращается в куски, он превращается в жидкость, которая распространяется на весь день».

Вот почему мы постоянно работаем наполовину и никогда не уделяем должного времени отключению без вины.

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

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

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

Отдых дает время подумать и успокоиться, углубляет нашу сосредоточенность и делает нас более, а не менее продуктивными, - говорит 52-летний Алекс, который был очарован идеей отдыха во время работы в Microsoft в Кембридже. Он много работал, но были и долгие неторопливые обеды и часы, проводимые в Болотах.

В то время, когда он читал об открытии Джеймсом Уотсоном структуры ДНК в 1953 году, он узнал, что он и его партнер Фрэнсис Крик часами проводили в пабе за долгими обедами.Уотсон часто уезжал в отпуск в Альпы или играл в теннис. Были ли они успешными, несмотря на время простоя - или благодаря ему?

Алекс начал исследовать других исторических тяжеловесов и нашел похожие истории. Они упорно работали в концентрированных куски, как правило, в начале дня, и взял остальные серьезно.

Натуралист Чарльз Дарвин был в своем кабинете ежедневно к 8 утра, но счел свою работу законченной к полудню и пошел на прогулку, а затем вздремнул. Писатели Энтони Троллоп и Чарльз Диккенс находили время для сна, хобби и прогулок, как и премьер-министр Великобритании во время войны Уинстон Черчилль.

GETTY

Сон жизненно важен для роста новых клеток мозга

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

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

«Хотел бы я узнать это 10 лет назад», - признается он.«Но, узнав, как практиковать такой отдых, я должен сказать, что сделал больше той работы, которую хотел сделать за последние несколько лет, чем за все предыдущие годы».

Как включить в свой график отдых без чувства вины:

Вставать рано

Даже полуночники, которые думают, что чем позже они более продуктивны, тем лучше работают утром. Исследования показывают, что четыре часа работы утром с последующим отдыхом более продуктивны, чем ночная зубрежка или разбивка работы на 12 часов.

Многие отличники сделали это. Энтони Троллоп встал на работу в 5 утра, архитектор Фрэнк Ллойд Райт встал в 4 часа утра, Чарльз Диккенс был в своем кабинете к 9 утра и закончил в полдень, а писатель триллеров Джон ле Карре написал свои первые три романа во время 90-минутной утренней поездки.

Идея состоит в том, чтобы встать и сразу заняться повседневными делами, интенсивно работая в течение четырех часов, включая перерыв, - говорит Алекс. Он встает в 5 утра и стремится закончить работу к обеду с перерывом в середине для выгула собак.

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

Риск отвлечься в это время невелик, отмечает он: «В 5 утра я настолько антиобщественен, что меня не интересует, что происходит на Facebook, и никто не просыпается в доме - даже собаки - и уж точно не мои двое детей-подростков ».

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

Испытано и протестировано: Расслабляющие масла для ванн

Четверг, 27 августа 2009 г.

1 из 8

Твердое масло для ванн Lush Dreamtime, £ 2,81 (lush.co.uk) Эта твердая смесь лаванды, жасмина и сандалового дерева растворяется под струей воды. Аромат расслабляющий и нежный, но кожа остается немного сухой. 7/10

Ежедневная прогулка

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

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

Чарльз Диккенс регулярно ходил пешком 10 или 12 миль в день, композиторы Бетховен и Чайковский каждый день часами гуляли по лесу, а основатель Apple Стив Джобс был известен своими пешеходными встречами.

«Прогулка - это плохо», - говорит Алекс, который каждый день берет с собой блокнот, чтобы записывать идеи. «Но 15–20 минут достаточно, чтобы ваш мозг начал блуждать, а затем вернулся к тому, о чем вы думали перед прогулкой.”

Высыпайтесь

Сон - это лучший отдых, но он не пассивный. Наш мозг усердно работает над консолидацией воспоминаний, устранением повреждений и удалением отходов. Это жизненно важно для роста новых клеток мозга, обработки новых навыков и поддержания иммунной системы.

Наука говорит нам, что семи часов сна вполне достаточно для большинства людей, но ежедневный 20-минутный сон может улучшить память, помочь уменьшить количество ошибок и повысить умственную активность и ясность ума.

Хобби, а не телевизор

Нет ничего плохого в том, чтобы бездельничать перед телевизором, но в долгосрочной перспективе это не так успокаивает, как то, что психологи называют глубокой игрой - хобби, которое увлекает вас и использует ваши навыки.

«Нам действительно нужны физические нагрузки, когда мы не требуем много нашего тела - безусловно, в этом есть смысл», - говорит Алекс. «Но активный отдых восстанавливает больше, чем пассивная деятельность, и он также заставляет перерыв в работе. Ты не можешь отвечать на электронные письма, когда висишь в 30 футах от земли на скале ».

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

Хобби Алекса - пешие прогулки и фотография, и он указывает на любовь Уинстона Черчилля к живописи. «Живопись требует ясного видения и быстрых решений. Вам нужен план атаки », - говорит он.

Книга Алекса Суджон-Ким Пана «Отдых: почему вы делаете больше, когда работаете меньше» (12,99 фунтов стерлингов, Penguin Life) выходит в четверг. См. Экспресс книжный магазин на сайте expressbookshop.com.

.

Понимание основ RESTful API

Полезны базовые знания разработки приложений на любом серверном языке.

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

REST - это стиль архитектуры API. Это означает передачу репрезентативного состояния.REST определяет, как данные представляются клиенту в формате, удобном для клиента. Обмен данными происходит в формате JSON или XML. Однако сегодня многие API возвращают данные JSON, поэтому в этом руководстве мы сосредоточимся на этом.

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

Предварительные требования

  • Базовые знания разработки приложений на любом серверном языке, таком как Node.js или PHP

Дополнительные требования

Понимание того, как происходит обмен данными через Интернет

Для простоты мы оставим этот раздел в основном. Достаточно, чтобы дать четкое представление о том, как происходит обмен данными через Интернет через TCP / IP (протокол управления передачей / интернет-протокол). TCP / IP - это набор протоколов связи, который описывает, как взаимодействует огромное количество компьютеров, подключенных к Интернету.

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

TCP / IP использует стандартную модель связи клиент-сервер, когда клиент (компьютерное устройство) запрашивает ресурс у сервера (возможно, гораздо большего компьютерного устройства в удаленном месте). Соединения с использованием TCP / IP не сохраняют состояния - каждый запрос от клиента к серверу рассматривается как новый, сервер никогда не запоминает клиента. Это освобождает ресурсы на сервере, чтобы сделать его быстрее и быстрее отвечать на несколько запросов.

Подробнее о TCP / IP можно прочитать в этой статье Search Target.

Понимание того, как API-интерфейсы позволяют приложениям общаться друг с другом.

Вы, наверное, задаетесь вопросом: «Хорошо, это было круто, но какое это имеет отношение к чему-либо?». API похожи на TCP / IP для приложений. Он определяет, как приложения взаимодействуют и обмениваются данными между собой. Как и TCP / IP, API RESTful не имеют состояния. Все запросы с использованием API должны содержать как можно больше информации, чтобы сервер мог идентифицировать клиента.

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

По сути, RESTful API работают примерно так же, как и стандартные запросы TCP / IP, за исключением того, что здесь нет клиентов и серверов, а есть только два приложения, которые общаются друг с другом.

Краткое описание различных шаблонов API

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

Стиль туннелирования

Туннелирование работает как система удаленных вызовов процедур (RPC), организованная в формате сообщения XML. Сам по себе RPC - это действительно старая технология, которая лучше всего подходит для передачи команд и процедур.В настоящее время он используется на таких платформах, как Ethereum, и имеет встроенную поддержку в Golang. В некоторых случаях SOAP использует туннелирование, но мы не будем это рассматривать.

SOAP - Простой протокол доступа к объектам

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

Многие из причин, по которым стоит выбрать SOAP, включают функции, связанные с безопасностью, транзакциями и соответствием ACID (атомарность, согласованность, изоляция, долговечность), которые редко применимы к сценариям веб-сервисов, поэтому он более привлекателен для приложений масштаба предприятия.

REST

REST - это действительно API «веб-сервисов», помещающий его на противоположную сторону от SOAP (возможно, поэтому вы увидите на них дюжину сравнений, не слишком вдаваясь в подробности). API-интерфейсы REST основаны на URI (унифицированный идентификатор ресурса) и протоколе HTTP.API-интерфейсы REST могут обмениваться данными в формате JSON или XML, хотя многие API-интерфейсы REST отправляют данные в формате JSON.

При создании системы с минимальными требованиями к безопасности, но с высокими требованиями к скорости, REST - отличный выбор. API-интерфейсы RESTful имеют меньше требований к безопасности, улучшают совместимость браузера с клиентом, возможность обнаружения, работоспособность данных и масштабируемость - вещи, которые действительно применимы к веб-службам.

RESTful API - рекомендации по проектированию

Мы определили и использовали несколько простых конечных точек RESTful API в предыдущей статье о кодах ответа HTTP в интерфейсных приложениях - Часть 2.Пожалуйста, прочтите статью, прежде чем продолжить работу с остальной частью этой статьи.

Проектирование API - это совсем другое дело. Есть передовые методы, которые следует учитывать, чтобы ваши API-интерфейсы были легко доступны для всех. Давайте перечислим пять из них ниже:

Используйте существительные во множественном числе, а не глаголы.

В качестве примера представьте, что вам нужна услуга для управления запасами фруктов. Вот простая диаграмма основных API REST, которые вы можете создать для своего фруктового приложения.

Ресурс ПОЛУЧИТЬ прочитать POST создать PUT обновление УДАЛИТЬ
/ фрукты Возвращает список фруктов, возможно, все фрукты, которые у вас есть Создайте новый фрукт Массовое обновление фруктов (возможно, вам никогда не придется этого делать) Удалить все фрукты (возможно, вам не следует это реализовывать)
/ фрукты / 1004 Возвращает определенный фрукт Метод запрещен (405) Обновляет определенный фрукт Удаляет определенный фрукт

Не рекомендуется использовать конечные точки API, такие как / getFruits или / delete-fruit или / createfruits .Вместо этого воспользуйтесь HTTP-глаголами для определений. Это означает, что я могу легко использовать ваши API и иметь меньше ресурсов для управления. Этот подход менее двусмысленен и чище.

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

Метод

GET и его параметры запроса не должны изменять состояние

Избегайте создания таких конечных точек

  GET / fruit / 1004? Avaliable = false GET / fruit / 1004 / has-finished  

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

Если вам необходимо изменить состояние, используйте POST, PUT или DELETE, как в таблице выше.

Вы можете прочитать «Целенаправленное разрушение» - пример из реальной жизни, когда это произошло.

Используйте подресурсы для отношений

Допустим, вы разрабатываете социальную сеть, в которой у пользователей есть блоги, вы должны установить такие отношения:

  GET / users / 1004 / blogs  

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

  GET / users / 1004 / blogs / 1010  

Обработка ошибок с помощью кодов состояния HTTP

Мы составили полное руководство по кодам состояния HTTP с объяснением вариантов их использования. Вы должны понимать, что сложно работать с API, игнорирующим обработку ошибок. Возврат неправильных кодов состояния или возврат трассировки стека без полезного сообщения об ошибке не помогает пользователю API. Неважно, есть у вас документация или нет.

Обеспечить разбиение на страницы, сортировку и фильтрацию

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

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

Основы безопасности API

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

Аутентификация

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

Авторизация

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

В блоге Pusher есть много статей об аутентификации / авторизации для API, поэтому, пожалуйста, ознакомьтесь с ними.

Когда использовать сервис, такой как Pusher, вместо этого

Pusher предоставляет размещенные API-интерфейсы для создания быстрых и безопасных приложений в реальном времени. Это включает, но не ограничивается приложениями для общения и совместной работы.

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

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

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

Заключение

В этом руководстве мы рассмотрели API-интерфейсы RESTful и несколько вещей, которые следует учитывать при их разработке. Мы кратко рассмотрели различные шаблоны API, чтобы вы могли увидеть, есть ли что-то другое, что может решить вашу проблему.

Хотя это не исчерпывающее руководство по созданию RESTful API, теперь вы знаете о них и можете приступить к созданию API, которые могут использовать многие люди.

.

Развертывание модели машинного обучения как REST API | автор: Нгуен Нго

Рисунок Игоря Козака

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

Создав REST API для моей модели, я смог отделить свой код от других разработчиков.Здесь есть четкое разделение труда, которое хорошо подходит для определения ответственности и не позволяет мне напрямую блокировать товарищей по команде, которые не связаны с аспектом машинного обучения проекта. Еще одно преимущество состоит в том, что мою модель могут использовать несколько разработчиков, работающих на разных платформах, таких как веб или мобильная.

В этой статье я построю простую модель Scikit-Learn и разверну ее как REST API с помощью Flask RESTful. Эта статья предназначена специально для специалистов по обработке данных, не имеющих обширного опыта в области компьютерных наук.

Для этого примера я собрал простой байесовский классификатор Naives, чтобы предсказать тональность фраз в обзорах фильмов.

Данные взяты из конкурса Kaggle "Анализ настроений в обзорах фильмов". Отзывы делятся на отдельные предложения, а предложения далее делятся на отдельные фразы. Все фразы имеют оценку тональности, так что модель можно обучить на том, какие слова придают предложению положительную, нейтральную или отрицательную окраску.

Распределение оценок из набора данных Kaggle

Большинство фраз имели нейтральную оценку.Сначала я попытался использовать полиномиальный наивный байесовский классификатор, чтобы предсказать один из пяти возможных классов. Однако, поскольку большинство данных имело рейтинг 2, модель работала не очень хорошо. Я решил не усложнять задачу, потому что основная цель этого упражнения - это в первую очередь развертывание как REST API. Итак, я ограничил данные крайними классами и обучил модель предсказывать только отрицательные или положительные настроения.

Оказалось, что полиномиальная наивная байесовская модель очень эффективна для предсказания положительных и отрицательных настроений.Вы можете найти краткий обзор процесса обучения модели в этом пошаговом руководстве Jupyter Notebook. После обучения модели в записной книжке Jupyter я перенес свой код в сценарии Python и создал объект класса для модели НЛП. Вы можете найти код в моем репозитории Github по этой ссылке. Вам также потребуется обработать или сохранить вашу модель, чтобы вы могли быстро загрузить обученную модель в свой скрипт API.

Теперь, когда у нас есть модель, давайте развернем ее как REST API.

Запустите новый скрипт Python для вашего приложения Flask для API.

Импорт библиотек и загрузка рассылок

Приведенный ниже блок кода содержит множество шаблонов Flask и кода для загрузки рассылок классификатора и векторизатора.

 из flask import Flask 
from flask_restful import reqparse, abort, Api, Resource
import pickle
import numpy as np
from model import NLPModelapp = Flask (__ name__)
api = Api (app) # create new model object
model = NLPModel () # загрузить обученный классификатор
clf_path = 'lib / models / SentimentClassifier.pkl '
с open (clf_path,' rb ') as f:
model.clf = pickle.load (f) # загрузить обученный векторизатор
vec_path =' lib / models / TFIDFVectorizer.pkl '
с open (vec_path,' rb ') как f:
model.vectorizer = pickle.load (f)

Создать парсер аргументов

Парсер будет просматривать параметры, которые пользователь отправляет вашему API. Параметры будут в словаре Python или в объекте JSON. В этом примере мы будем специально искать ключ под названием query .Запросом будет фраза, по которой пользователь хочет, чтобы наша модель предсказывала, является ли фраза положительной или отрицательной.

 # анализ аргументов 
parser = reqparse.RequestParser ()
parser.add_argument ('query')

Объект класса ресурсов

Ресурсы являются основными строительными блоками для RESTful API Flask. Каждый класс может иметь методы, соответствующие HTTP-методам, например: GET , PUT , POST и DELETE . GET будет основным методом, потому что наша цель - выполнять прогнозы.В методе get ниже мы даем инструкции о том, как обрабатывать запрос пользователя и как упаковать объект JSON, который будет возвращен пользователю.

 class PredictSentiment (Resource): 
def get (self):
# использовать парсер и найти запрос пользователя
args = parser.parse_args ()
user_query = args ['query'] # векторизовать запрос пользователя и сделать прогноз
uq_vectorized = model.vectorizer_transform (
np.array ([user_query]))
прогноз = модель.prediction (uq_vectorized)
pred_proba = model.predict_proba (uq_vectorized) # Вывести 'Negative' или 'Positive' вместе с результатом
, если prediction == 0:
pred_text = 'Negative'
else:
pred_text = 'Positive'

# округлить прогнозируемое значение вероятности и установить новую переменную
уверенность = round (pred_proba [0], 3)

# создать объект JSON
output = {'prediction': pred_text, 'уверенность': уверенность}

return output

Там - отличный учебник от Flask-RESTful, в котором они создают приложение для выполнения и демонстрируют, как использовать методы PUT , POST и DELETE .

Конечные точки

Следующий код установит базовый URL-адрес для ресурса предиктора настроения. Вы можете представить, что у вас может быть несколько конечных точек, каждая из которых указывает на другую модель, которая будет делать разные прогнозы. Одним из примеров может быть конечная точка «/ рейтинги» , которая направит пользователя к другой модели, которая может прогнозировать рейтинги фильмов с учетом жанра, бюджета и участников производства. Для этой второй модели потребуется создать еще один объект ресурса.Их можно просто добавлять друг за другом, как показано ниже.

 api.add_resource (PredictSentiment, '/') 

# пример другой конечной точки
api.add_resource (PredictRatings, '/ rating')

Name == Main Block

Здесь особо не о чем говорить. Установите для отладки значение False, если вы развертываете этот API в производственной среде.

 if __name__ == '__main__': 
app.run (debug = True)

Запросы пользователей

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

С модулем запросов в Jupyter Notebook:

 url ​​= 'http://127.0.0.1:5000/' 
params = {'query': 'этот фильм был скучным'}
response = requests.get (url , params)
response.json () Вывод: {'уверенность': 0,128, 'прогноз': 'Отрицательный'}

Использование curl в терминале:

 $ curl -X GET http://127.0.0.1:5000 / -d query = 'этот фильм был скучным' 
{
«прогноз»: «Отрицательный»,
«уверенность»: 0,128
}

Использование HTTPie в терминале:

 $ http http: // 127.0.0.1: 5000 / query == 'этот фильм был скучным'HTTP / 1.0 200 OK 
Content-Length: 58
Content-Type: application / json
Date: Fri, 31 Aug 2018 18:49:25 GMT
Server : Werkzeug / 0.14.1 Python / 3.6.3 {
«уверенность»: 0,128,
«прогноз»: «Отрицательный»
}

Теперь мои товарищи по команде могут добавить прогноз настроения в свое приложение, просто сделав запрос к этому API , и все это без необходимости смешивать вместе Python и JavaScript.

Full app.py code

Иногда бывает полезно увидеть весь код в одном месте.

Файловая структура

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

 sentiment-clf / 
├── README.md
├── app.py # Flask REST API script
├── build_model.py # сценарий для построения и обработки модели классификатора
├── model. py # скрипт для объекта класса классификатора
├── util.py # вспомогательные функции
├── requirements.txt
└── lib /
├── data / # data from Kaggle
│ ├ ── sampleSubmission.csv
│ ├── test.tsv
│ └── train.tsv
└── models / # маринованные модели для импорта в скрипт API
├── SentimentClassifier.pkl
└── TFIDFVectorizer.pkl

Deployment

После того, как вы построили свою модель и REST API и завершили локальное тестирование, вы можете развернуть свой API так же, как любое приложение Flask, во многих службах хостинга в Интернете. При развертывании в Интернете пользователи во всем мире могут делать запросы к вашему URL-адресу, чтобы получать прогнозы. Руководства по развертыванию включены в документацию Flask.

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

Помимо развертывания моделей в виде REST API, я также использую REST API для управления запросами к базе данных для данных, которые я собрал с помощью извлечения из Интернета. Это позволяет мне сотрудничать с разработчиком полного стека без необходимости управлять кодом их приложения React.Если мобильный разработчик хочет создать приложение, ему нужно будет только ознакомиться с конечными точками API.

.

Смотрите также