Что такое код hw_api_object

Содержание

hw_api_object

(PHP 4, PHP 5 hw_api_object — Creates a new instance of class hw_api_object

Описание

Creates a new instance of the >hw_api_object.

Список параметров

Возвращаемые значения

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

НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

XXXIX. Функции Hyperwave API

Hyperwave был разработан IICMв Graz. Он начинался как Hyper-G и сменил название на Hyperwave при коммерциализации (насколько помню, это было в 1996).

Hyperwave это не бесплатная программа. Текущая версия, 5.5, доступна на www.hyperwave.com. Можно запросить оценочную версию с ограниченным временем использования (30 дней).

Hyperwave это информационная система, аналогичная database (HIS, Hyperwave Information Server). Она сфокусирована на хранении и обслуживании документов. Документом может быть любой блок данных, которые могут сохраняться в файле. Каждый документ сопровождается записью объекта. Запись объекта/object record содержит метаданные документа. Метаданные это список атрибутов, который может быть расширен пользователем. Некоторые атрибуты всегда устанавливаются Hyperwave-сервером, другие могут модифицироваться пользователем.

С 2001 г. доступен Hyperwave SDK. Он поддерживает Java, JavaScript и C++. Данное расширение PHP базируется на интерфейсе C++. Чтобы активировать поддержку hwapi в PHP, вы должны сначала установить Hyperwave SDK и сконфигурировать PHP с опцией —with-hwapi= .

API, предоставляемый расширением HW_API, является полностью объектно-ориентированным. Он очень похож на интерфейс C++ Hyperwave SDK. Он состоит из следующих классов.



Некоторые базовые классы вроде HW_API_String , HW_API_String_Array , etc., которые имеются в Hyperwave SDK, не реализованы, поскольку PHP имеет для них полноценную замену.

Каждый класс имеет метод, имя которого идентично имени его двойника из Hyperwave SDK. Передача аргументов такой функции отличается от всех других расширений PHP и напоминает C++ API пакета HW SDK. Вместо передачи различных параметров, они все помещаются в ассоциативный массив и передаются как один параметр. Имена ключей идентичны именам, задокументированным в HW SDK. Общие параметры перечислены ниже. Если необходимы другие параметры, они будут документированы, если это необходимо.


objectIdentifier Имя или id объекта, например, «rootcollection», «0x873A8768 0x00000002».

parentIdentifier Имя или id объекта, который считается родительским.

object Экземпляр класса HW_API_Object.

parameters Экземпляр класса HW_API_Object.

version Версия объектанн.

mode Целочисленное значение — способ выполнения операции.

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

objectQuery Запрос на выбор определённого объекта из списка объектов. Используется для уменьшения количества объектов, выдаваемых функциями вроде hw_api->children() или hw_api->find() .

Интеграция с Apache и, возможно, другими серверами уже описана в модуле Hyperwave Modul, который был первым расширением для соединения с Hyperwave Server.

hw_api::object — Retrieve attribute information

(PHP 4, PHP 5 hw_api::object — Retrieve attribute information

Описание

This function retrieves the attribute information of an object of any version. It will not return the document content.

Список параметров

The parameter array contains the required elements ‘objectIdentifier’ and the optional elements ‘attributeSelector’ and ‘version’.

Возвращаемые значения

The returned object is an instance of >HW_API_Object on success or HW_API_Error if an error occurred.

Примеры

This simple example retrieves an object and checks for errors.

Пример #1 Retrieve an object

function handle_error ( $error )
<
$reason = $error -> reason ( 0 );
echo «Type: » ;
switch ( $reason -> type ()) <
case 0 :
echo «Error» ;
break;
case 1 :
echo «Warning» ;
break;
case 2 :
echo «Message» ;
break;
>
echo «

\n» ;
echo «Description: » . $reason -> description ( «en» ) . «
\n» ;
>

function list_attr ( $obj )
<
echo »

\n» ;
$count = $obj -> count ();
for ( $i = 0 ; $i $count ; $i ++) <
$attr = $obj -> attribute ( $i );
printf ( »

\n» ,
$attr -> key (), $attr -> value ());
>
echo «

%s %s

\n» ;
>

$hwapi = hwapi_hgcsp ( $g_config [ HOSTNAME ]);
$parms = array( «objectIdentifier» => «rootcollection» , «attributeSelector» =>array( «Title» , «Name» , «DocumentType» ));
$root = $hwapi -> object ( $parms );
if ( get_class ( $root ) == «HW_API_Error» ) <
handle_error ( $root );
exit;
>
list_attr ( $root );
?>

Руководство по построению HTTP API

Введение

Данное руководство содержит рекомендации по проектированию HTTP API, которые были почерпнуты из работы API облачной платформы Heroku, кроме того, оно также содержит информацию о новом функционале и внутреннем API в Heroku.

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

При прочтении данной статьи подразумевается, что вы знакомы с основными принципами HTTP и JSON.

Основы

Принцип разделения ответственности

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

Требуйте использования защищенных соединений

Для получения данных при помощи API используйте только защищенные соединения с TLS.
Лучше решением было бы отклонять все запросы, не использующие TLS, а именно запросы по http или на 80-ый порт, во избежание небезопасного обмена данными. В случаях, когда это невозможно, отдавайте ответ 403 Forbidden .

14 ноября в 10:00, Санкт-Петербург, беcплатно

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

Требуйте наличие версии в заголовке Accept

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

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

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

Используйте заголовок ETags для кеширования

Включайте заголовок ETags во все запросы, определяя при этом версию возвращаемого ресурса. Это позволит пользователям кэшировать ресурсы и реализовывать условные запросы при помощи использования заголовка If-None-Match , который поможет определить, нужно обновлять кэш или нет.

Используйте Request-ID для интроспекции

Включайте заголовок Request-Id , содержащий в себе UUID значение, в каждый ответ сервера. Регистрируя эти значения на клиенте, сервере или другом сервисе, вы получаете возможность отлаживать и диагностировать проблемы, связанные с запросами.

Разделяйте большие ответы сервера на несколько небольших при помощи заголовка Range

Большие ответы необходимо разбивать на более мелкие, используя заголовок Range . Для получения более детальной информации о заголовках запросов/ответов, кодах состояний и ограничениях изучите Обсуждение использования заголовка Range в API платформы Heroku .

Запросы

Возвращайте соответствующие коды состояний

Возвращайте соотвествующий код состояния HTTP в каждом ответе. Успешные ответы должны содержать такие коды состояний:

  • 200 – GET запрос завершился успешно, синхронный DELETE или PATCH запрос завершился успешно или синхронный PUT запрос обновил существующий ресурс.
  • 201 – Синхронный POST запрос завершился, синхронный PUT запрос создал новый ресурс.
  • 202 – Принят POST , PUT , DELETE или PATCH запрос, который будет обработан асинхронно.
  • 206 – GET запрос завершился успешно, но будет возвращен частичный ответ (см. раздел про заголовок Range ).

Обратите внимание на использование кодов состояния ошибок авторизации и аутентификации:

  • 401 Unauthorized – запрос завершился с ошибкой, поскольку пользователь не прошел аутентификацию.
  • 403 Forbidden – запрос завершился с ошибкой, так как пользователь не авторизовался для получения доступа к определенному ресурсу.

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

  • 422 Unprocessable Entity – Ваш запрос был распознан, но содержит неверные параметры.
  • 429 Too Many Requests – Превышен лимит запросов, попробуйте позже.
  • 500 Internal Server Error – Проблема на стороне сервера, проверьте состояние сайта и/или сообщите о проблеме.

Для получения более подробной информации о кодах состояния HTTP изучите спецификацию.

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

Возвращайте пользователям вашего API полное представление ресурса (то есть объект со всеми атрибутами) во всех ответах, где это возможно. Всегда предоставляйте полную версию ресурса в ответах на запросы с кодами состояния 200 и 201 , включая PUT , PATCH и DELETE запросы.

Ответы на запросы с кодом состояния 202 не должны содержать все поля объекта

Ваш API должен принимать сериализованный JSON в теле запроса

Ваш API должен предусматривать возможность передачи сереализованного JSON в теле PUT / PATCH / POST запросов вместо, либо в дополнение к передаваемым данным формы. Таким образом создается симметрия в JSON-ответах:

Будьте последовательны при конструировании пути к ресурсу

Названия ресурсов

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

Действия

Старайтесь проектировать такие конечные url, которые не требуют дополнительных действий для отдельных ресурсов. В случаях, когда это необходимо, добавляйте в общий путь компонент «action» для того, чтобы четко определить эти действия:

Используйте названия компонентов пути и атрибутов в нижнем регистре

Для названий компонентов пути к ресурсу используйте нижний регистр и разделяйте их при помощи дефиса.

Названия атрибутов лучше писать в нижнем регистре, а в качестве разделителя лучше использовать нижнее подчеркивание – таким образом названия полей можно писать без скобок в Javascript:

Ваш API должен поддерживать доступ к ресурсу не только по его id

В некоторых случаях для конечных пользователей неудобен доступ к ресурсу по его идентификатору. Например, пользователю удобнее для доступа к конкретному приложению Heroku использовать название приложения, а не его UUID. В таких случаях нужно организовать доступ как по имени, так и по идентификатору:

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

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

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

Ответы

Предоставляйте UUID запрашиваемых ресурсов

У каждого ресурса по умолчанию должен быть атрибут id . В качестве значений идентификатора ресурса старайтесь всегда использовать UUID. Не используйте идентификаторы, которые не будут уникальными в масштабе вашего сервиса, особенно автоинкрементные идентификаторы.
UUID ресурса выводите в формате 8-4-4-4-12:

Предоставляйте информацию о дате создания и изменения ресурса

По умолчанию ресурс должен хранить информацию о дате его создания created_at и обновления updated_at .

Временные величины должны быть форматированы согласно ISO8601

Принимайте и возвращайте временные данные только в UTC, а выводите в формате ISO8601:

Отношения с внешними сущностями должны быть вынесены во вложенный объект

Внешние отношения должны быть сериализованы как вложенный объект:

А не как поле объекта:

Такой подход позволяет добавить больше информации о связанном объекте без необходимости менять структуру ответа:

Создавайте структурированные ответы в случае возникновения ошибок

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

Показывайте ограничение по количеству запросов

Ограничение по количеству запросов вводится для поддержания работоспособности системы и возможности качественного обслуживания других клиентов. Для расчета ограничений на количество запросов можно использовать алгоритм текущего ведра. Возвращайте оставшееся количество запросов для каждого запроса в заголовке ответа RateLimit-Remaining .

JSON во всех ответах должен быть минимизирован

Лишний пробел увеличивает размер ответа и многие Javascript клиенты для удобочитаемости автоматически отформатируют JSON. Поэтому лучше минимизировать JSON ответы:

Вы можете опционально добавить возможность получать более развернутый ответ, указывая дополнительный параметр (например, ?pretty=true ) или задавая значения для заголовка Accept ( Accept: application/vnd.heroku+json; version=3; indent=4; ).

Артефакты

Предоставляйте удобную для обработки JSON-схему

Для точного описания вашего API предоставляйте JSON-схему. Для управления схемой используйте prmd, также удостоверьтесь в том, что она проходит валидацию при помощи команды prmd verify .

Предоставляйте удобочитаемую документацию

Для того, чтобы разработчики разбирались в принципах работы вашего API, предоставьте им удобную документацию. Если вы создали JSON-схему, используя prmd , как описано выше, вы можете легко сгенерировать Markdown документацию для всех конечных url, используя команду prmd doc .

Вдобавок к описанию конечных url, предоставьте обзор API, включая туда следующую информацию:

  • процесс аутентификации – получение и использование пользовательского токена;
  • стабильность API и его версию, а также информацию о том, как выбрать нужную версию API;
  • общие заголовки запросов и ответов;
  • формат выдачи ошибки;
  • примеры использования API с клиентами на разных языках;

Предоставляйте примеры запросов, которые можно протестировать

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

Если вы используете prmd для создания документации, то такие примеры будут сгенерированы автоматически для каждого конечного url.

Опишите стабильность вашего API

Вы можете описать степень стабильности вашего API или отдельных конечных url при помощи установки флагов prototype / development / production .

Для получения дополнительной информации, вы можете изучить документ Политика совместимости Heroku API.

Как только вы объявили ваш API готовым к релизу и стабильным, не стоит совершать модификаций, которые нарушают обратную совместимость внутри этой версии. Для внесения таких изменений создайте новою ветвь API с новым индексом версии.

DATA API

Соглашения

Приняты следующие соглашения при использовании Data API:

  • Пустые поля всегда возвращаются в ответе со значением null . В случае массива возвращается пустой массив, в случае объекта возвращается пустой объект;
  • Все поля связанные с датой и временем передаются в формате YYYY-MM-DD hh:mm:ss;
  • Запросы к API выполняются всегда с помощью метода POST;
  • Все параметры в запросах/ответах, а также в структурах данных в формате JSON и название методов именуются в стиле Snake Case — разделение слов через нижнее подчёркивание;
  • Данные возвращаются только в JSON формате согласно спецификации RFC 7159. Заголовок Accept игнорируется;
  • Кодировка данных UTF-8;
  • Заголовок Content-Type должен быть «application/json; charset=UTF-8» ;
  • Заголовок Content-Length должен содержать корректную длину сообщения, следуя спецификации HTTP/1.1

Добавить IP-адрес в список разрешенных

По умолчанию доступ к API запрещен всем, чтобы можно было делать запросы необходимо IP-адрес хоста с которого делается запрос добавить в белый список. Это можно сделать через личный кабинет «Администратор -> Аккаунт -> Правила и настройки безопасности» вкладка «API».

Если необходимо разрешить доступ всем IP-адресам, то нужно добавить в список разрешенных 0.0.0.0/0

Если запрос делается из под агента, то его IP адрес должен быть добавлен в белый список клиентского аккаунта

Пользователи API и аутентификация

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

Доступ по ключу

Ключи генерируются на уровне пользователя в разделе личного кабинета «Аккаунт» → «Управление пользователями»
Существует два типа ключей:

Постоянный ключ имеет неограниченное время действия.
Временный ключ имеет конкретную дату окончания действия ключа.

Доступ по логину и паролю

Используется аутентификация с использованием сессий

Отчёт по запросам к API

В личном кабинете «Отчёты»->»Служебные»->»Запросы к API» можно построить отчёт по запросам к API

Базовый URL для доступа к API

Базовый URL для доступа к API соответствует следующему шаблону:

— https;

  • — api.comagic.ru, api.uiscom.ru;
  • — версия API (см. раздел Версионность)
  • Версионность

    Текущая версия Data API 2.0

    Data API поддерживает версионность. Версия указывается в базовом URL как vX.Y , где X — номер мажорной версии, Y — номер минорной версии

    Если была выпущена новая версия, то старая считается устаревшей и соответственно при обращении к старой версии API в мета-параметрах (см. раздел Мета-параметры) будет возвращаться параметр «current_version_deprecated» со значением «true»

    Максимальное количество поддерживаемых версий — 2
    Период поддержки устаревшей версии 2 месяца

    Лимиты и ограничения

    Баллы списываются только за успешные запросы, т.е в отчете по запросам к API (см. раздел Отчёт по запросам к API) он помечен как успешный.

    Информация о лимитах возвращается во всех ответах в мета-парметрах (см. раздел Мета-параметры) кроме случаев когда лимиты не учитываются;

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

    Информация о лимитах в мета-параметрах:

    Название параметра Описание
    day_limit Текущий лимит баллов в день
    day_remaining Какое количество баллов осталось до достижения дневного лимита
    day_reset Время в секундах через которое дневной лимит будет сброшен
    minute_limit Текущий лимит баллов за минуту
    minute_remaining Какое количество баллов осталось до достижения минутного лимита
    minute_reset Время в секундах через которое минутный лимит будет сброшен

    Методы и их стоимость в баллах

    Тип операции Стоимость в баллах
    Все операции 1

    Расширение лимитов

    На странице «Аккаунт» -> «Тарифы и опции» в личном кабинете можно расширить лимиты.

    Обработка ошибок

    Параметры сообщения об ошибке

    Название Тип Обязательный Описание
    error object да Объект с содержимым ошибки
    code number да Не уникальный код ошибки (см. раздел Группы кодов ошибок )
    message string да Cообщение об ошибке
    data object да Объект с деталями ошибки
    mnemonic string да Уникальный текстовый код ошибки. При обработке ошибок рекомендуется использовать этот параметр.
    value string нет Содержит то, что передал пользователь без изменений

    В некоторых случаях может отсутствовать. К примеру, обязательный параметр вообще не был заполнен.

    extended_helper string нет Ссылка на более подробное описание ошибки и возможные решения params object нет Карта подстановок параметров для шаблона с текстом об ошибке. Т.е. содержит динамически изменяемые значения, к примеру, лимиты. Значения указанные в этом параметре могут быть использованы в сообщениях об ошибках в интерфейсе, который базируется на Data API. field string нет Название параметра, с которым связана ошибка

    Вложенные параметры отображаются через разделитель точка «.»
    К примеру: «employee.phone_number»

    JSON структура ошибки

    Группы кодов ошибок

    Код ошибки Описание
    -32700 Ошибки связанные с валидацией JSON
    -32600 Ошибки связанные с валидацией параметров запроса — id , jsonrpc
    -32601 Ошибки связанные с методом
    -32602 Ошибки связанные с валидацией параметров в вызываемом методе
    -32603 Внутренние ошибки JSON RPC сервера
    -32001 Ошибки аутентификации и ошибки с ключами
    -32003 Ошибки с правами доступа — ip адрес не в белом списке, нет прав у пользователя
    -32004 Ошибки связанные с неверной последовательностью вызываемых методов
    -32007 Ошибки связанные с виртуальным номером
    -32008 Ошибки связанные с компонентами
    -32009 Ошибки связанные с аккаунтом
    -32029 Ошибки связанные с лимитами
    -32099 Ошибки связанные с поддержкой различных частей спецификации JSON RPC 2.0 — Групповые операции, Уведомления

    Список ошибок общих для всех методов

    Текст сообщение Код Мнемоника Описание
    Invalid Request The JSON sent is not a valid Request object -32600 invalid_request Ошибки связанные с валидацией параметров запроса — id , jsonrpc
    Access token has been expired -32001 access_token_expired Применяется только к постоянному токену. Если время жизни постоянного токена истекло, то возвращается указанная ошибка
    Access token has been blocked -32001 access_token_blocked Если постоянный токен заблокирован, то возвращается указанная ошибка
    Access token is invalid -32001 access_token_invalid Указанная ошибка возвращается если постоянный/временный токен не найден
    Limit per has been exceeded. Value of current limit per is -32029 limit_exceeded Лимит превышен
    You need at least on of the following components to access this method: -32008 method_component_disabled Если не подключен компонент, который требуется для работы метода
    You need at least on of the following components to access this paremeter: -32008 parameter_component_disabled Если не подключен компонент, который нужен для заполнения параметра и создания сущности
    Your IP is not whitelisted -32003 ip_not_whitelisted IP адрес с которого делается запрос не находится в белом списке адресов. Если запрос делается из под агента, то ваш IP адрес должен быть в списках разрешеных адресов внутри клиентского аккаунта
    Login or password is wrong -32001 auth_error Неправильный логин или пароль
    Your account has been disabled, contact the support service -32009 account_inactive Аккаунт заблокирован
    Internal error, contact the support service -32603 internal_error Внутренняя ошибка, необходимо обратиться в службу технической поддержки
    Data supplied is of wrong type -32602 data_type_error К примеру, если ожидаем string а передали int
    The method does not exist / is not available -32601 method_not_found Вызываемый метод не найден
    Permission denied -32003 forbidden Нет прав на доступ к методу или API, или запрещено выполнять какое-либо действие
    Invalid JSON was received by the server. -32700 parse_error Ошибка валидации JSON
    Batch operations not supported -32099 batch_opreations_not_supported Групповые операции не поддерживаются
    Notifications not supported -32099 notifications_not_supported Был потерян параметр id в запросе. См. раздел Общие параметры для всех методов»
    The required parameter has been missed -32602 required_parameter_missed Обязательный параметр не передали
    Invalid parameter value -32602 invalid_parameter_value Возвращается во всех случаях, если было передано некорректное значение параметра или переданное значение не соответствует требуемому формату ввода
    Unexpected method parameter(s) -32602 unexpected_parameters Если в «params» были переданы параметры которые не предусмотрены JSON структурой метода или указан параметр для сортировки, фильтрации и выборки, который не существует
    The combination of parameters is not permitted -32602 invalid_parameters_combination Если параметры указанные в методе находятся в недопустимой комбинации или имеют зависмость друг от друга. Нужно смотреть документацию по методу и его параметрам.
    -32602 error Динамические ошибки

    Список ошибок для методов с глаголом get

    Текст ошибки Код Мнемоника Описание
    Invalid parameter value -32602 invalid_parameter_value Если в фильтрах было передано некорректное значение для regexp, jsquery или любых значений не соответствующих документации
    Sort by parameter is prohibited -32602 sort_prohibited Сортировка по параметру запрещена и невозможна, так как параметр для сортировки не находится в списке разрешенных для сортировки
    Filter by parameter is prohibited -32602 filter_prohibited Фильтрация по параметру запрещена и невозможна, так как параметр для фильтрации не находится в списке разрешенных для фильтрации
    Max value of requested date interval is 3 months -32602 date_interval_limit_reached Если в запросе период между указанными датами в date_from и date_till превышает 3 месяца. В основном ошибка актуальна только для методов получения отчетов, но не для всех.

    Список ошибок общих для методов с глаголом delete

    Текст ошибки Код Мнемоника Описание
    Entity not found -32602 entity_not_found Если передан уникальный идентификатор сущности, которая не найдена
    You have interdependet entities -32602 dependency_error Удаляемая сущность используется в других сущностях. Чтобы удалить, необходимо убрать удаляемую сущность из всех возможных мест где она используется
    Permission denied -32602 forbidden Удалить сущность невозможно так как она системная, к примеру группа «Черный список» в адресной книге

    Список ошибок общих для методов с глаголом create и update, set, unset

    Текст ошибки Код Мнемоника Описание
    Entity not found -32602 entity_not_found Если передан уникальный идентификатор сущности, которая не найдена
    Duplicate entity -32602 duplicate_entity Если сущность уже существует
    A new data limit has been exceeded -32602 data_limit_exceeded Ошибка возникает в случае, если было достигнуто максимальное количество данных.
    Action is not allowed for your tariff plan. You need contact support service or change your tariff plan settings in your account -32602 tariff_restrictions Любые ограничения тарифного плана
    This value is already used by another entity -32602 already_in_use Значение указанного параметра уже используется в другой сущности. К примеру, виртуальный номер уже используется в другой рекламной кампании.

    Групповые операции

    Функционал не поддерживается

    Принцип именования методов

    Имя JSON-RPC метода состоит из двух частей разделенных точкой: глагола и имени объекта.

    Имя объекта выбирается как существительное во множественном числе, отражающее бизнес-сущность, например subscribers .

    Имя метода должно начинаться с глагола, отражающего суть операции.

    Глаголы используемые в именовании методов

    Глагол Описание
    create Добавляет сущность.
    get Возвращает список отсортированных и отфильтрованных данных с помощью критериев фильтрации и методов сортировки. К запросу возможно применить лимит и постраничный вывод на количество получаемых данных (см. раздел Постраничный вывод). С помощью критериев фильтрации может быть так же получена одна запись, по ёё уникальному идентификатору (см. раздел Критерии фильтрации). В специальном мета-параметре возвращается общее количество записей (см. раздел Мета-параметры). С помощью специального параметра можно указать какие поля возвращать в ответном сообщении (см. раздел Представление возвращаемых данных).
    update Обновляет сущность с определённым идентификатором.

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

    delete Удаляет сущность с определённым идентификатором. add Связь одного объекта с другим. enable Подключение объекта disable Отключение объекта set Простановка свойства на другой объект, к примеру, установка тега на обращение unset Снятие свойства с другого объека, к примеру, снятие тега с обращения

    Критерии фильтрации

    Фильтрация данных применяется только к глаголу «get» (см. раздел «Глаголы используемые в именовании методов» с помощью необязательного примитива «filter» , который является объектом и может содержать:

    1. Простой фильтр;
    2. Дерево фильтров которое содержит простые фильтры с условиями.

    Простой фильтр — это объект, который содержит в себе обязательные примитивы:

    • field — поле сущности к которой будет применяться фильтрация (список заранее определён для метода);
    • operator — оператор фильтрации. Список всех операторов можно получить в разделе «Операторы фильтрации»;
    • value — значение для оператора фильтрации. Необязательное поле, если оно отсутствует, то считается пустота.

    Дерево фильтров содержит специальный примитив «filters» , который может содержать в себе как простые фильтры, так и дерево фильтров.

    Возможные ошибки при фильтрации

    Текст Код Мнемоника Описание
    Filter by parameter is prohibited -32602 filter_prohibited Фильтрация по параметру запрещена и невозможна, так как параметр для фильтрации не находится в списке разрешенных для фильтрации
    Unexpected method parameter(s) -32602 unexpected_parameters Передан ошибочный параметр или параметр, которого не существует

    Пример JSON структуры простого фильтра

    Получаем список записей у которых поле «name» имеет имя «Bob»

    Пример JSON структуры дерева фильтров с одним уровнем вложенности

    Получаем список записей у которых поле «name» имеет имя «Bob» и его возраст 25 лет

    Пример JSON структуры дерева фильтров с двойным уровнем вложенности

    Получаем список записей у которых поле «name» имеет имя «Bob» и его возраст 25 лет или список записей у которых поле «name» имеет имя «Dexter» и его возраст 2 года

    Пример JSON структуры дерева фильтров с тройным уровнем вложенности

    Условие запроса ((addv_comp_ >

    Операторы фильтрации

    Фильтрация null и not null будет =null, !=null

    Оператор Описание Учёт регистра строк Тип данных
    = Равно да number, string, null, boolean, iso8601, enum
    != Не равно да number, string, null, boolean, iso8601, enum
    Меньше чем number, iso8601
    > Больше чем number, iso8601
    Меньше или равно number, iso8601
    >= Больше или равно number, iso8601
    like Начинается с, Заканчивается на, Содержит
    да string regexp Posix да string jsquery PostgreSQL jsquery да object, array in Массив значений в отношении «or» да number, string, enum

    Сортировка данных

    Сортировка данных применяется только к глаголу «get» (см. раздел «Глаголы используемые в именовании методов») с помощью массива объектов сортировки со следующими примитивами:

    • field — поле по которому производится сортировка;
    • order — направления сортировки. Возможные значения «asc» / «desc» . «asc» — по возрастанию, «desc» — по убыванию. Параметр необязателен. Значение по умолчанию «asс» .

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

    Возможные ошибки при сортировки

    Текст ошибки Код Мнемоника Описание
    Sort by parameter is prohibited -32602 sort_prohibited Сортировка по параметру запрещена и невозможна, так как параметр для сортировки не находится в списке разрешенных для сортировки
    Unexpected method parameter(s) -32602 unexpected_parameters Передан ошибочный параметр или параметр, которого не существует

    Постраничный вывод

    Постраничный вывод может быть применён к глаголу «get» (см. раздел «Глаголы используемые в именовании методов»). Для выполнения пагинации данных используются следующие параметры:

    Параметр Значение по умолчанию Допустимое значение Описание
    offset 100 000 Сдвиг, определяет с какого номера записи возвращать «limit» записей
    limit 1000 10 000 Размер возвращаемых данных (количество записей)

    Мета-параметры

    Возвращаются при использовании глагола «get» (см. раздел «Глаголы используемые в именовании методов»).

    Присутствуют как в ошибочном, так и в успешном ответе

    Параметр «api_version» возвращается только для версий которые deprecated.

    Представление возвращаемых данных

    Отдельный список возвращаемых столбцов

    В глаголе получения данных «get» (см. раздел «Глаголы используемые в именовании методов») может быть указан специальный необязательный примитив «fields» с типом массив, который может содержать список полей которые необходимо показать в выводе. Если примитив «fields» не используется, то в выводе показываются все поля по умолчанию для вызываемого метода.

    Список полей индивидуален для каждого метода.

    Возможные ошибки в представлении возвращаемых данных

    Текст Код Мнемоника Описание
    Unexpected method parameter(s) -32602 unexpected_parameters Передан ошибочный параметр или параметр, которого не существует

    Общие поля для всех методов

    Название Тип Обязательный Допустимые значения Описание
    id string или number да Уникальный идентификатор запроса к API, который используется для связи запроса с ответом. Рекомендуется делать в виде уникального хэша или случайного числа .
    method string да Вызываемый метод
    jsonrpc string да 2.0 Номер спецификации JSON-RPC
    params object да Содержит тело запроса к API. В зависимости от вызываемого метода тело запроса меняется.

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

    Метод login.user
    Описание Вход и получение ключа сессии аутентификации
    Кому доступен Партнёр, Клиент

    Параметры запроса

    Название Тип Обязательный Допустимые значения Описание
    login string да Логин пользователя
    password string да Пароль пользователя

    Параметры ответа

    Название Тип Обязательный Описание
    access_token string да Ключ сессии аутентификации
    expire_at number да Timestamp когда выданный токен перестанет быть валидным
    app_id number да Уникальный идентификатор клиента

    Время жизни полученного ключа сессии аутентификации после вызова метода «login.user» — 1 час. По истечению времени жизни ключа сессии его необходимо запрашивать заново, т.е. вызывать метод «login.user» .

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

    Что такое код hw_api_object

    API (application programming interface) — это набор готовых классов, функций, процедур, структур и констант. Вся эта информация предоставляется самим приложением (или операционной системой). При этом пользователю не обязательно понимать, что это API технология обеспечивает взаимодействие модулей. Цель предоставленной информации – использование этих данных при взаимодействии с внешними программами.

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

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

    Функции API

    В процессе работы элементы механизма API организуют многоуровневую иерархию. При этом подчиненные компоненты также получают подобную структуру. Внутри стандартной сетевой модели OSI выделяют как минимум 7 внутренних уровней. Они классифицируются от физического уровня трансляции бит до приложений, таких как протоколы HTTP и IMAP. Таким образом API верхнего использует функциональность нижнего.

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

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

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

    Эти компоненты дают возможность компилятору опознать функцию в языке C++. В тех случаях, когда она является методом определенного класса, ее сигнатура включается в имя этого класса.

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

    Типы API

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

    В отдельные группы выделяют интерфейсы управления графическими компонентами программных модулей (API графических интерфейсов wxWidgets, Qt, GTK и т. п.), операционными системами (Amiga ROM Kernel, Cocoa, Linux Kernel APIruen, OS/2 API, POSIX, Windows API), звуковые (DirectMusic/DirectSound, OpenAL), оконные интерфейсы и так далее. Здесь их разделение определяется уровнем приложения в иерархии и функциональностью. Пользователи компьютерных игр обычно не подозревают, что это графический API обеспечивает им такую быструю отрисовку картинки и поразительную яркость изображений.

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

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

    1. Трудности портирования кода программы при переходе от одной API к другой. Они часто появляются при переносе модулей в другие операционные системы.
    2. Снижения объема функциональности интерфейса при переходе к управлению с более низкого уровня на высокий. В этом случае облегчается выполнение строго определенного класса задач. При этом возможности доступа к элементам управления другими регуляторами теряются. Ведь более низкий уровень позволяет легко управлять базовыми компонентами программы.

    API вебмастеров / поисковых систем

    Для вебмастеров и программистов особенно важны Web API. Такие системы управления включают в себя комплект HTTP-запросов. В результате получения таких запросов модуль генерирует строго определенную структуру HTTP-ответов. Для транспортировки информации между ними принято использовать форматы XML или JSON.

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

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

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

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

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

    Обычно порядок работы интерфейса стараются передать в его названии. Мы можем не найти в поиске, что такое syngestureapisampleapp application. Но из названия понятно, что это пример работы интерфейса для единичного пользователя.

    При этом нужно учитывать изменения в интерфейсах, произошедшие после массового внедрения стандартов Web 2.0. В результате был выполнен переход протокола обмена структурированными данными в распределенной вычислительной среде SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) к архитектурному стилю взаимодействия компонентов распределенного приложения в сети REST (сокр. от англ. Representational State Transfer — «передача состояния представления»). Для многих веб-служб, в число которых входят поисковые системы и интернет-магазины, данный переход привел к упрощению архитектуры и ускорению выполнения задач. Правильная организация информационных потоков приводит к тому, что API сайта предоставляет широкие возможности автоматизации последнего.

    При этом отдельные компоненты REST функционируют примерно таким же образом, как взаимодействуют между собой серверы и клиенты в Интернете. Хотя работа систем на архитектуре REST до сих пор не имеет единого стандарта, большинство RESTful-реализаций используют конкретные стандарты, такие как HTTP, URL, JSON и XML. Здесь особенно важно, что открытый API – это возможность дополнения и расширения системы взаимодействия.

    Введение в web APIs

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

    Необходимые знания: Базовая компьютерная грамотность, понимание основ HTML и CSS, основы JavaScript (см. первые шаги, building blocks, объекты JavaScript).
    Цель: Познакомиться с API, выяснить что они могут делать и как их использовать.

    Что такое API?

    Интерфейс прикладного программирования (Application Programming Interfaces, APIs) — это готовые конструкции языка программирования, позволяющие разработчику строить сложный функционал с меньшими усилиями. Они «скрывают» более сложный код от программиста, обеспечивая простоту использования.

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

    Точно также, если мы хотим, например, программировать 3D графику, гораздо легче сделать это с использованием API, написанных на языках высокого уровня, таких как JavaScript или Python.

    Note: См. также API в словаре.

    API клиентской части JavaScript

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

    • API браузера встроены в веб-браузер и способны использовать данные браузера и компьютерной среды для осуществления более сложных действий с этими данными. К примеру, API Геолокации (Geolocation API) предоставляет простые в использовании конструкции JavaScript для работы с данными местоположения, так что вы сможете, допустим, отметить свое расположение на карте Google Map. На самом деле, в браузере выполняется сложный низкоуровневый код (например, на C++) для подключения к устройству GPS (или любому другому устройству геолокации), получения данных и передачи их браузеру для обработки вашей программой, но, как было сказано выше, эти детали скрыты благодаря API.
    • Сторонние API не встроены в браузер по умолчанию. Такие API и информацию о них обычно необходимо искать в интернете. Например, Twitter API позволяет размещать последние твиты (tweets) на вашем веб-сайте. В данном API определён набор конструкций, осуществляющих запросы к сервисам Twitter и возвращающих определённые данные.

    Взаимодействие JavaScript, API и других средств JavaScript

    Итак, выше мы поговорили о том, что такое JavaScript API клиентской части и как они связаны с языком JavaScript. Давайте теперь тезисно запишем основные понятия и определим назначение других инструментов JavaScript:

    • JavaScript — Язык программирования сценариев высокого уровня, встроенный в браузер, позволяющий создавать функционал веб-страниц/приложений. Отметим, что JavaScript также доступен на других программных платформах, таких как Node. Но пока не будем останавливаться на этом.
    • API браузера (Browser APIs) — конструкции, встроенные в браузер, построенные на основе языка JavaScript, предназначенные для облегчения разработки функционала.
    • Сторонние API (Third party APIs) — конструкции, встроенные в сторонние платформы (такие как Twitter, Facebook) позволяющие вам использовать часть функционала этих платформ в своих собственных веб-страницах/приложениях (например, показывать последние Твиты на вашей странице).
    • Библиотеки JavaScript — Обычно один или несколько файлов, содержащих пользовательские (custom) функции . Такие файлы можно прикрепить к веб-странице, чтобы ускорить или предоставить инструменты для написания общего функционала. Примеры: jQuery, Mootools и React.
    • JavaScript фреймворки (frameworks) — Следующий шаг в развитии разработки после библиотек. Фреймворки JavaScript (такие как Angular и Ember) стремятся к тому, чтобы быть набором HTML, CSS, JavaScript и других технологий, после установки которого можно «писать» веб-приложение с нуля. Главное различие между фреймворками и библиотеками — «Обратное направление управления» ( “Inversion of Control” ). Вызов метода из библиотеки происходит по требованию разработчика. При использовании фреймворка — наоборот, фреймворк производит вызов кода разработчика.

    На что способны API?

    Широкое разнообразие API в современных браузерах позволяет наделить ваше приложение большими возможностями. Достаточно посмотреть список на странице MDN APIs index page.

    Распространённые API браузера

    В частности, к наиболее часто используемым категориям API (и которые мы рассмотрим далее в этом модуле) относятся :

    • API для работы с документами, загруженными в браузер. Явный пример — DOM (Document Object Model) API, позволяющий работать с HTML и CSS — создавать, удалять и изменять HTML, динамически изменять вид страницы и т.д. Любое всплывающее окно на странице или появляющееся «на ходу» содержимое — всё это благодаря DOM. Узнайте больше об этой категории API на странице Работа с документами.
    • API, принимающие данные от сервера, часто используются, чтобы обновить небольшие части веб-страницы. Эта, казалось бы, малая деталь оказывает огромное влияние на производительность и поведение сайтов, так как нет необходимости перезагружать всю страницу целиком, если вам нужно просто обновить список товаров или новых доступных историй. Это также сделает приложение или сайт более отзывчивым и «живым». Список API, благодаря которым это возможно, включает: XMLHttpRequest и Fetch API. Вы также могли встретить термин Ajax, описывающий эту технологию. Узнать больше об этой категории API на странице Получение данных от сервера.
    • API для работы с графикой широко поддерживаются браузерами, самые популярные: Canvas и WebGL, позволяющие программно изменять данные о пикселях, содержащиеся в элементе HTML Элемент может быть использован для отрисовки графики через скрипты (обычно используется JavaScript). На пример, его можно использовать для отрисовки графиков, делать композиции фото или даже выполнять анимации. Вы можете (и должны) дать альтернативное содержание внури блока . Этот контент будет рендерится в обоих браузерах, в старых которые не поддерживают canvas и в браузерах с отключённым JavaScript.»> для создания 2D и 3D изображений. Например, вы можете нарисовать фигуры, скажем, прямоугольники или круги, импортировать изображение в canvas и применить к нему фильтры, такие как сепия или оттенки серого с помощью Canvas API, или создать сложное 3D-изображение с освещением и текстурами, используя WebGL. Такие API часто используют в сочетании с API создания анимационных циклов (таких как window.requestAnimationFrame() ) и другими для создания постоянно меняющегося изображения на экране, как в мультфильмах или играх .
    • Аудио и Видео API как HTMLMediaElement , Web Audio API, и WebRTC позволяют делать действительно интересные вещи с мультимедиа. Например, создать собственный пользовательский интерфейс (User Interface, UI) для проигрывания аудио/видео, вывод на экран субтитров, записывать видео с веб-камеры для обработки в canvas (см. выше) или для передачи на другой компьютер в видео-конференции, применять звуковые эффекты к аудио-файлам (такие как gain, distortion, panning и т.д.).
    • API устройств — в основном, API для обработки и считывания данных с современных устройств удобным для работы веб-приложений образом. Мы уже говорили об API Геолокации, позволяющем считать данные о местоположении устройства. Другие примеры включают уведомление пользователя о появившемся обновлении для веб-приложения с помощью системных уведомлений (см. Notifications API) или вибрации (см. Vibration API).
    • API хранения данных на стороне пользователя приобретают всё большее распространение в веб-браузерах — возможность хранить информацию на стороне клиента очень полезна, когда необходимо создать приложение, которое будет сохранять своё состояние между перезагрузками страницы, или даже работать, когда устройство не в сети. В даный момент доступно немало таких API. Например, простое хранилище данных в формате имя/значение (name/value) Web Storage API или хранилище данных в формате таблиц IndexedDB API.

    Распространённые сторонние API

    Существует множество сторонних API; некоторые из наиболее популярных, которые вы рано или поздно будете использовать, включают:

    • Twitter API для добавления такого функционала, как показ последних твитов на сайте.
    • Google Maps API для работы с картами на веб-странице (интересно, что Google Maps также использует этот API). Теперь это целый набор API, который может справляться с широким спектром задач, как свидетельствует Google Maps API Picker.
    • Набор Facebook API позволяет использовать различные части платформы Facebook в вашем приложении, предоставляя, например, возможность входа в систему с логином Facebook, оплаты покупок в приложении, демонстрация целевой рекламы и т.д.
    • YouTube API, предоставляющий возможность встраивать видео с YouTube на вашем сайте, производить поиск, создавать плэйлисты и т.д.
    • Twilio API — фреймворк для встраивания функционала голосовой и видео связи в вашем приложении, отправки SMS/MMS из приложения и т.д.

    Note: Вы можете найти информацию о гораздо большем количестве сторонних API в Programmable Web API directory.

    Как работает API?

    Работа разных JavaScript API немного отличается, но, в основном, у них похожие функции и принцип работы.

    Они основаны на объектах

    Взаимодействие с API в коде происходит через один или больше объектов JavaScript, которые служат контейнерами для информации, с которой работает API (содержится в свойствах объекта), и реализуют функционал, который предоставляет API (содержится в методах объекта).

    Note: Если вам ещё не известно как работают объекты, советуем вернуться назад и изучить модуль JavaScript objects прежде чем продолжать.

    Вернёмся к примеру с API Геолокации — очень простой API, состоящий из нескольких простых объектов:

    • Geolocation , содержит три метода для контроля и получения геоданных.
    • Position , предоставляет данные о местоположении устройства в заданный момент времени — содержит Coordinates — объект, хранящий координаты и отметку о текущем времени.
    • Coordinates , содержит много полезной информации о расположении устройства, включая широту и долготу, высоту, скорость и направление движения и т.д.

    Так как же эти объекты взаимодействуют? Если вы посмотрите на наш пример maps-example.html (see it live also), вы увидите следующий код:

    Note: Когда вы впервые загрузите приведённый выше пример, появится диалоговое окно, запрашивающее разрешение на передачу данных о местонахождении этому приложению (см. раздел У них есть дополнительные средства безопасности там, где это необходимо далее в этой статье). Вам нужно разрешить передачу данных, чтобы иметь возможность отметить своё местоположение на карте. Если вы всё ещё не видите карту, возможно, требуется установить разрешения вручную; это делается разными способами в зависимости от вашего браузера; например, в Firefox перейдите > Tools > Page Info > Permissions, затем измените настройки Share Location; в Chrome перейдите Settings > Privacy > Show advanced settings > Content settings и измените настройки Location.

    Во-первых, мы хотим использовать метод Geolocation.getCurrentPosition() , чтобы получить текущее положение нашего устройства. Доступ к объекту браузера Geolocation производится с помощью свойства Navigator.geolocation , так что мы начнём с

    Это эквивалентно следующему коду

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

    Метод Geolocation.getCurrentPosition() имеет один обязательный параметр — анонимную функцию, которая запустится, когда текущее положение устройства будет успешно считано. Сама эта функция принимает параметр, являющийся объектом Position , представляющим данные о текущем местоположении.

    Note: Функция, которая передаётся другой функции в качестве параметра, называется функцией обратного вызова (callback function).

    Такой подход, при котором функция вызывается только тогда, когда операция была завершена, очень распространён в JavaScript API — убедиться, что операция была завершена прежде, чем пытаться использовать данные, которые она возвращает, в другой операции. Такие операции также называют асинхронными операциями (asynchronous operations). Учитывая, что получение данных геолокации производится из внешнего устройства (GPS-устройства или другого устройства геолокации), мы не можем быть уверены, что операция считывания будет завершена вовремя и мы сможем незамедлительно использовать возвращаемые ею данные. Поэтому такой код не будет работать:

    Если первая строка ещё не вернула результат, вторая вызовет ошибку из-за того, что данные геолокации ещё не стали доступны. По этой причине, API, использующие асинхронные операции, разрабатываются с использованием callback function, или более современной системы Обещаний(Promises), которая появилась в ECMAScript 6 и широко используются в новых API.

    Мы совмещаем API Геолокации со сторонним API — Google Maps API, который используем для того, чтобы отметить расположение, возвращаемое getCurrentPosition() , на Google Map. Чтобы Google Maps API стал доступен на нашей странице, мы включаем его в HTML документ:

    Чтобы использовать этот API, во-первых создадим объект LatLng с помощью конструктора google.maps.LatLng() , принимающим данные геолокации Coordinates.latitude и Coordinates.longitude :

    Этот объект сам является значением свойства center объекта настроек (options), который мы назвали myOptions . Затем мы создаём экземпляр объекта, представляющего нашу карту, вызывая конструктор google.maps.Map() и передавая ему два параметра — ссылку на элемент ) является универсальным контейнером для потокового контента. Он не влияет на контент или макет до тех пор, пока не будет стилизован с помощью CSS.»>

    Когда это сделано, наша карта отрисовывается.

    Последний блок кода демонстрирует два распространённых подхода, которые вы увидите во многих API:

    • Во-первых, объекты API обычно содержат конструкторы, которые вызываются для создания экземпляров объектов, используемых при написании программы.
    • Во-вторых, объекты API зачастую имеют несколько вариантов (options), которые можно настроить и получить именно ту среду для разработки, которую вы хотите. API конструкторы обычно принимают объекты вариантов (options) в качестве параметров, с помощью которых и происходит настройка.

    Note: Не отчаивайтесь, если вы что-то не поняли из этого примера сразу. Мы рассмотрим использование сторонних API более подробно в следующих статьях.

    У них узнаваемые точки входа

    При использовании API убедитесь, что вы знаете где точка входа для API. В API Геолокации это довольно просто — это свойство Navigator.geolocation , возвращающее объект браузера Geolocation , внутри которого доступны все полезные методы геолокации.

    Найти точку входа Document Object Model (DOM) API ещё проще — при применении этого API используется объект и

    ), а также обеспечивает функциональность, которая является глобальной для документа, например, для получения URL-адреса страницы или создания новых элементов в документе).»> Document , или экземпляр элемента HTML, с которым вы хотите каким-либо образом взаимодействовать, к примеру:

    Всё, что мы хотим сделать с canvas после этого, достигается вызовом свойств и методов объекта содержимого (content) (который является экземпляром .»> CanvasRenderingContext2D ), например:

    Note: Вы можете увидеть этот код в действии в нашем bouncing balls demo (see it running live also).

    Они используют события для управления состоянием

    Мы уже обсуждали события ранее в этом курсе, в нашей статье Introduction to events — в этой статье детально описываются события на стороне клиента и их применение. Если вы ещё не знакомы с тем, как работают события клиентской части, рекомендуем прочитать эту статью прежде, чем продолжить.

    В некоторых API содержится ряд различных событий, в некоторых — событий нет. Свойства обработчика, позволяющие запускать функции при совершении какого-либо события по большей части перечислены в нашем материале отдельного раздела «Обработчики событий (Event handlers)». Как простой пример, экземпляры объекта XMLHttpRequest (каждый представляет собой HTTP-запрос к серверу на получение каких-либо ресурсов (resource)) имеют несколько доступных событий, например, событие load происходит, когда ответ с запрашиваемым ресурсом был успешно возвращён и доступен в данный момент.

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

    Note: Вы можете увидеть этот код в действии в примере ajax.html (see it live also).

    В первых пяти строках мы задаём расположение ресурса, который хотим получить, создаём экземпляр объекта запроса с помощью конструктора XMLHttpRequest() , открываем HTTP-запрос GET , чтобы получить запрашиваемый ресурс, определяем, что мы хотим получить этот ресурс в формате json, после чего отсылаем запрос.

    Затем функция-обработчик onload определяет наши действия по обработке ответа сервера. Нам известно, что ответ успешно возвращён и доступен после наступления события load (и если не произойдёт ошибка), так что мы сохраняем ответ, содержащий возвращённый сервером объект JSON в переменной superHeroes , которую затем передаём двум различным функциям для дальнейшей обработки.

    У них есть дополнительные средства безопасности там, где это необходимо

    Функционал WebAPI подвержен тем же соображениям безопасности , что и JavaScript или другие веб-технологии (например, same-origin policy), но иногда они содержат дополнительные механизмы защиты. К примеру, некоторые из наиболее современных WebAPI работают только со страницами, обслуживаемыми через HTTPS в связи с передачей конфиденциальных данных (примеры: Service Workers и Push).

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

    Notifications API запрашивает разрешение подобным образом:

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

    Итоги

    На данном этапе, у вас должно сформироваться представление о том, что такое API, как они работают и как вы можете применить их в своём JavaScript коде. Вам наверняка не терпится начать делать по-настоящему интересные вещи с конкретными API, так вперёд! В следующий раз мы рассмотрим работу с документом с помощью Document Object Model (DOM).

    В этом модуле

    Metadata

    • Последнее изменение: Jun 23, 2020 , by MDN contributors
    1. Новички начинают здесь!
    2. Начало работы с Вебом
      1. Начало работы с Вебом
      2. Установка базового программного обеспечения
      3. Каким должен быть ваш веб-сайт?
      4. Работа с файлами
      5. Основы HTML
      6. Основы CSS
      7. Основы JavaScript
      8. Публикация вашего веб-сайта
      9. Как работает Веб
    3. HTML — структура Веба
    4. Вступление в HTML
      1. Вступление в HTML
      2. Начало работы с HTML
      3. Что в «шапке»? Метаданные в HTML
      4. Тексты в HTML
      5. Создание гиперссылок
      6. Продвинутое форматирование текста
      7. Структура документа и веб-сайта
      8. Отладка HTML
      9. Задание: Выделение символа
      10. Задание: Структура страницы
    5. Мультимедиа и встраивание
      1. Мультимедиа и встраивание
      2. Изображения в HTML
      3. Видео и аудио контент
      4. От object до iframe — другие технологии встраивания
      5. Добавление векторный графики в Веб
      6. Отзывчивые изображения
      7. Задание: Страница о Mozilla
    6. HTML tables
      1. HTML tables overview
      2. HTML table basics
      3. HTML Table advanced features and accessibility
      4. Assessment: Structuring planet data
    7. HTML forms
      1. HTML forms overview
      2. Your first HTML form
      3. How to structure an HTML form
      4. The native form widgets
      5. Sending form data
      6. Form validation
      7. How to build custom form widgets
      8. Sending forms through JavaScript
      9. HTML forms in legacy browsers
      10. Styling HTML forms
      11. Advanced styling for HTML forms
      12. Property compatibility table for form widgets
    8. CSS — стилизирование Веба
    9. Вступление в CSS
      1. Вступление в CSS
      2. Как работает CSS
      3. Синтаксис CSS
      4. Введение в селекторы
      5. Простые селекторы
      6. Селекторы по атрибутам
      7. Псевдоклассы и псевдоэлементы
      8. Комбинаторы и множественные селекторы
      9. CSS значения и единицы
      10. Каскадность и наследование
      11. Блочная модель
      12. Отладка CSS
      13. Задание: Основы понимания CSS
    10. Стилизирование текста
      1. Стилизирование текста
      2. Основы стилизирования текста и шрифта
      3. Стилизирование списков
      4. Стилизирование ссылок
      5. Веб-шрифты
      6. Задание: Стилизирование школьного сайта
    11. Стилизирование блоков
      1. Стилизирование блоков
      2. Кратко о блочной модели
      3. Фоны
      4. Рамки
      5. Стилизирование таблиц
      6. Продвинутые эффекты
      7. Задание: Создание разукращенного листа
      8. Задание: Классно выглядищий блок
    12. CSS макет
      1. CSS макет
      2. Вступление
      3. Normal Flow
      4. Flexbox
      5. Сетки
      6. Float
      7. Позиционирование
      8. Multiple-column Layout
      9. Legacy Layout Methods
      10. Supporting Older Browsers
      11. Fundamental Layout Comprehension
    13. JavaScript — динамический клиентский скриптинг
    14. Первые шаги в JavaScript
      1. Первые шаги в JavaScript
      2. Что такое JavaScript?
      3. Первое погружение в JavaScript
      4. Что-то пошло не так? Устранение ошибок JavaScript
      5. Хранение нужной информации — Переменные
      6. Основы JavaScript — Числа и операторы
      7. Работа с текстом — Строки в JavaScript
      8. Полезные методы для строк
      9. Массивы
      10. Задание: Генератор глупых историй
    15. Блоки в JavaScript
      1. Блоки в JavaScript
      2. Делаем решения в вашем годе — Условия
      3. Повторение кода
      4. Функции — Переиспользуемые блоки кода
      5. Создаём свою функцию
      6. Возвращаемые значения функций
      7. Введение в события
      8. Задание: Галерея изображений
    16. Введение в объекты JavaScript
      1. Введение в объекты JavaScript
      2. Основы объектов
      3. Объектно-ориентированный JavaScript для новичков
      4. Прототипы объектов
      5. Наследование в JavaScript
      6. Работа с JSON данными
      7. Практика по созданию объектов
      8. Задание: Добавление возможностей в пример с прыгающими шарами
    17. Asynchronous JavaScript
      1. Asynchronous JavaScript overview
      2. General asynchronous programming concepts
      3. Introducing asynchronous JavaScript
      4. Cooperative asynchronous Java​Script: Timeouts and intervals
      5. Graceful asynchronous programming with Promises
      6. Making asynchronous programming easier with async and await
      7. Choosing the right approach
    18. Client-side web APIs
      1. Client-side web APIs
      2. Introduction to web APIs
      3. Manipulating documents
      4. Fetching data from the server
      5. Third party APIs
      6. Drawing graphics
      7. Video and audio APIs
      8. Client-side storage
    19. Accessibility — Make the web usable by everyone
    20. Accessibility guides
      1. Accessibility overview
      2. What is accessibility?
      3. HTML: A good basis for accessibility
      4. CSS and JavaScript accessibility best practices
      5. WAI-ARIA basics
      6. Accessible multimedia
      7. Mobile accessibility
    21. Accessibility assessment
      1. Assessment: Accessibility troubleshooting
    22. Инструменты и тестирование
    23. Кроссбраузерное тестирование
      1. Кроссбраузерное тестирование
      2. Вступление в кроссбраузерное тестирование
      3. Стратегии выполнения тестирования
      4. Решение частых проблем с HTML и CSS
      5. Решение частых проблем с JavaScript
      6. Решение частых проблем доступности
      7. Проверка поддержки возможностей
      8. Вступление в автоматическое тестирование
      9. Установка вашей автоматической среды тестирования
    24. Программирование серверной части сайта
    25. Первые шаги
      1. Первые шаги
      2. Вступление в серверное программирование
      3. Клиент-сервер
      4. Веб-фреймворки для серверной части
      5. Защищённость веб-сайтов
    26. Веб-фреймворк Django (Python)
      1. Веб-фреймворк Django (Python)
      2. Вступление
      3. Установка среды разработки
      4. Руководство: Сайт местной библиотеки
      5. Руководство часть 2: Создаём набросок сайта
      6. Руководство часть 3: Использование моделей
      7. Руководство часть 4: Django панель администратора
      8. Руководство часть 5: Создание нашей домашней страницы
      9. Руководство часть 6: Списки и представления
      10. Руководство часть 7: Сессии
      11. Руководство часть 8: Аутенфикация и разрешения пользователей
      12. Руководство часть 9: Работа с формами
      13. Руководство часть 10: Тестирование веб-приложения на Django
      14. Руководство часть 11: Разворачивание Django на продакшн сервере
      15. Защищённость веб-приложения
      16. Задание: создание мини блога
    27. Express Web Framework (node.js/JavaScript)
      1. Express Web Framework (Node.js/JavaScript) overview
      2. Express/Node introduction
      3. Setting up a Node (Express) development environment
      4. Express tutorial: The Local Library website
      5. Express Tutorial Part 2: Creating a skeleton website
      6. Express Tutorial Part 3: Using a database (with Mongoose)
      7. Express Tutorial Part 4: Routes and controllers
      8. Express Tutorial Part 5: Displaying library data
      9. Express Tutorial Part 6: Working with forms
      10. Express Tutorial Part 7: Deploying to production
    28. Дальнейшее чтение
    29. Общие вопросы
      1. Вопросы по HTML
      2. Вопросы по CSS
      3. JavaScript questions
      4. Как работает Веб
      5. Инструменты и установка
      6. Дизайн и доступность
    30. Как помочь?

    Mozilla

    © 2005- 2020 Mozilla and individual contributors.

    Content is available under these licenses.

    \u0427\u0442\u043E\u0431\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 API, \u0432\u043E-\u043F\u0435\u0440\u0432\u044B\u0445 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 LatLng \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 google.maps.LatLng() , \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0449\u0438\u043C \u0434\u0430\u043D\u043D\u044B\u0435 \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 Coordinates.latitude \u0438 Coordinates.longitude :

    \u042D\u0442\u043E\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 \u0441\u0430\u043C \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 center \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A (options), \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u044B \u043D\u0430\u0437\u0432\u0430\u043B\u0438 myOptions . \u0417\u0430\u0442\u0435\u043C \u043C\u044B \u0441\u043E\u0437\u0434\u0430\u0451\u043C \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430, \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0449\u0435\u0433\u043E \u043D\u0430\u0448\u0443 \u043A\u0430\u0440\u0442\u0443, \u0432\u044B\u0437\u044B\u0432\u0430\u044F \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 google.maps.Map() \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044F \u0435\u043C\u0443 \u0434\u0432\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 \u2014 \u0441\u0441\u044B\u043B\u043A\u0443 \u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 ) \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0443\u043D\u0438\u0432\u0435\u0440\u0441\u0430\u043B\u044C\u043D\u044B\u043C \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043E\u043C \u0434\u043B\u044F \u043F\u043E\u0442\u043E\u043A\u043E\u0432\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430. \u041E\u043D \u043D\u0435 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u0438\u043B\u0438 \u043C\u0430\u043A\u0435\u0442 \u0434\u043E \u0442\u0435\u0445 \u043F\u043E\u0440, \u043F\u043E\u043A\u0430 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0438\u043B\u0438\u0437\u043E\u0432\u0430\u043D \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E CSS.\\\»>

    \u041A\u043E\u0433\u0434\u0430 \u044D\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u043D\u043E, \u043D\u0430\u0448\u0430 \u043A\u0430\u0440\u0442\u0430 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u044B\u0432\u0430\u0435\u0442\u0441\u044F.

    \u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0431\u043B\u043E\u043A \u043A\u043E\u0434\u0430 \u0434\u0435\u043C\u043E\u043D\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0432\u0430 \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u043F\u043E\u0434\u0445\u043E\u0434\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u043E \u043C\u043D\u043E\u0433\u0438\u0445 API:

    \\n\\n

      \\n
    • \u0412\u043E-\u043F\u0435\u0440\u0432\u044B\u0445, \u043E\u0431\u044A\u0435\u043A\u0442\u044B API \u043E\u0431\u044B\u0447\u043D\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0445 \u043F\u0440\u0438 \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u0438\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B. \\n
    • \u0412\u043E-\u0432\u0442\u043E\u0440\u044B\u0445, \u043E\u0431\u044A\u0435\u043A\u0442\u044B API \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044E \u0438\u043C\u0435\u044E\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 (options), \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0438\u043C\u0435\u043D\u043D\u043E \u0442\u0443 \u0441\u0440\u0435\u0434\u0443 \u0434\u043B\u044F \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435. API \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u044B \u043E\u0431\u044B\u0447\u043D\u043E \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442 \u043E\u0431\u044A\u0435\u043A\u0442\u044B \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 (options) \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432, \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0438 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430. \\n

    \\n\\n

    Note: \u041D\u0435 \u043E\u0442\u0447\u0430\u0438\u0432\u0430\u0439\u0442\u0435\u0441\u044C, \u0435\u0441\u043B\u0438 \u0432\u044B \u0447\u0442\u043E-\u0442\u043E \u043D\u0435 \u043F\u043E\u043D\u044F\u043B\u0438 \u0438\u0437 \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0438\u043C\u0435\u0440\u0430 \u0441\u0440\u0430\u0437\u0443. \u041C\u044B \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0445 API \u0431\u043E\u043B\u0435\u0435 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044C\u044F\u0445.

    \u0423 \u043D\u0438\u0445 \u0443\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u0442\u043E\u0447\u043A\u0438 \u0432\u0445\u043E\u0434\u0430

    \u041F\u0440\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 API \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044C, \u0447\u0442\u043E \u0432\u044B \u0437\u043D\u0430\u0435\u0442\u0435 \u0433\u0434\u0435 \u0442\u043E\u0447\u043A\u0430 \u0432\u0445\u043E\u0434\u0430 \u0434\u043B\u044F API. \u0412 API \u0413\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 \u044D\u0442\u043E \u0434\u043E\u0432\u043E\u043B\u044C\u043D\u043E \u043F\u0440\u043E\u0441\u0442\u043E \u2014 \u044D\u0442\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E Navigator.geolocation , \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0449\u0435\u0435 \u043E\u0431\u044A\u0435\u043A\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 Geolocation , \u0432\u043D\u0443\u0442\u0440\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0432\u0441\u0435 \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u043C\u0435\u0442\u043E\u0434\u044B \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438.

    \u041D\u0430\u0439\u0442\u0438 \u0442\u043E\u0447\u043A\u0443 \u0432\u0445\u043E\u0434\u0430 Document Object Model (DOM) API \u0435\u0449\u0451 \u043F\u0440\u043E\u0449\u0435 \u2014 \u043F\u0440\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0438 \u044D\u0442\u043E\u0433\u043E API \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442 \u0438

    ), \u0430 \u0442\u0430\u043A\u0436\u0435 \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u044C, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E\u0439 \u0434\u043B\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430,\u00A0\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0438\u043B\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u043D\u043E\u0432\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435).\\\»> Document , \u0438\u043B\u0438 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 HTML, \u0441 \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u043A\u0430\u043A\u0438\u043C-\u043B\u0438\u0431\u043E \u043E\u0431\u0440\u0430\u0437\u043E\u043C \u0432\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C, \u043A \u043F\u0440\u0438\u043C\u0435\u0440\u0443:

    \u0412\u0441\u0451, \u0447\u0442\u043E \u043C\u044B \u0445\u043E\u0442\u0438\u043C \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0441 canvas \u043F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0433\u043E, \u0434\u043E\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044F \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432 \u0438 \u043C\u0435\u0442\u043E\u0434\u043E\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E (content) (\u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C .\\\»> CanvasRenderingContext2D ), \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:

    Note: \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u0434 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0432 \u043D\u0430\u0448\u0435\u043C bouncing balls demo (see it running live also).

    \u041E\u043D\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\u043C

    \u041C\u044B \u0443\u0436\u0435 \u043E\u0431\u0441\u0443\u0436\u0434\u0430\u043B\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0440\u0430\u043D\u0435\u0435 \u0432 \u044D\u0442\u043E\u043C \u043A\u0443\u0440\u0441\u0435, \u0432 \u043D\u0430\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044C\u0435 Introduction to events \u2014 \u0432 \u044D\u0442\u043E\u0439 \u0441\u0442\u0430\u0442\u044C\u0435 \u0434\u0435\u0442\u0430\u043B\u044C\u043D\u043E \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043D\u0430 \u0441\u0442\u043E\u0440\u043E\u043D\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u0438 \u0438\u0445 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0435. \u0415\u0441\u043B\u0438 \u0432\u044B \u0435\u0449\u0451 \u043D\u0435 \u0437\u043D\u0430\u043A\u043E\u043C\u044B \u0441 \u0442\u0435\u043C, \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0439 \u0447\u0430\u0441\u0442\u0438, \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u044D\u0442\u0443 \u0441\u0442\u0430\u0442\u044C\u044E \u043F\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043C \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C.

    \u0412 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 API \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044F \u0440\u044F\u0434 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439, \u0432 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 — \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u043D\u0435\u0442. \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0430, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0442\u044C \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \u043F\u0440\u0438 \u0441\u043E\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438 \u043A\u0430\u043A\u043E\u0433\u043E-\u043B\u0438\u0431\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043F\u043E \u0431\u043E\u043B\u044C\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u044B \u0432 \u043D\u0430\u0448\u0435\u043C \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430 \\\»\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 (Event handlers)\\\». \u041A\u0430\u043A \u043F\u0440\u043E\u0441\u0442\u043E\u0439 \u043F\u0440\u0438\u043C\u0435\u0440, \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 XMLHttpRequest (\u043A\u0430\u0436\u0434\u044B\u0439 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u043E\u0431\u043E\u0439 HTTP-\u0437\u0430\u043F\u0440\u043E\u0441 \u043A \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043D\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u043A\u0430\u043A\u0438\u0445-\u043B\u0438\u0431\u043E \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432 (resource)) \u0438\u043C\u0435\u044E\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0441\u043E\u0431\u044B\u0442\u0438\u0435 load \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442, \u043A\u043E\u0433\u0434\u0430 \u043E\u0442\u0432\u0435\u0442 \u0441 \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043C\u044B\u043C \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u043C \u0431\u044B\u043B \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D \u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0432 \u0434\u0430\u043D\u043D\u044B\u0439 \u043C\u043E\u043C\u0435\u043D\u0442.

    \u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043A\u043E\u0434 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043F\u0440\u043E\u0441\u0442\u043E\u0439 \u043F\u0440\u0438\u043C\u0435\u0440 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u0439:

    Note: \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u0434 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0432 \u043F\u0440\u0438\u043C\u0435\u0440\u0435 ajax.html (see it live also).

    \u0412 \u043F\u0435\u0440\u0432\u044B\u0445 \u043F\u044F\u0442\u0438 \u0441\u0442\u0440\u043E\u043A\u0430\u0445 \u043C\u044B \u0437\u0430\u0434\u0430\u0451\u043C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0445\u043E\u0442\u0438\u043C \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C, \u0441\u043E\u0437\u0434\u0430\u0451\u043C \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 XMLHttpRequest() , \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u043C HTTP-\u0437\u0430\u043F\u0440\u043E\u0441 GET , \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043C\u044B\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C, \u0447\u0442\u043E \u043C\u044B \u0445\u043E\u0442\u0438\u043C \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 json, \u043F\u043E\u0441\u043B\u0435 \u0447\u0435\u0433\u043E \u043E\u0442\u0441\u044B\u043B\u0430\u0435\u043C \u0437\u0430\u043F\u0440\u043E\u0441.

    \u0417\u0430\u0442\u0435\u043C \u0444\u0443\u043D\u043A\u0446\u0438\u044F-\u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A onload \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043D\u0430\u0448\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043F\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041D\u0430\u043C \u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E, \u0447\u0442\u043E \u043E\u0442\u0432\u0435\u0442 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D \u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u0441\u043B\u0435 \u043D\u0430\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u044F load (\u0438 \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0451\u0442 \u043E\u0448\u0438\u0431\u043A\u0430), \u0442\u0430\u043A \u0447\u0442\u043E \u043C\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u043C \u043E\u0442\u0432\u0435\u0442, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D\u043D\u044B\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u043C \u043E\u0431\u044A\u0435\u043A\u0442 JSON \u0432 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 superHeroes , \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0437\u0430\u0442\u0435\u043C \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u043C \u0434\u0432\u0443\u043C \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u043C \u0444\u0443\u043D\u043A\u0446\u0438\u044F\u043C \u0434\u043B\u044F \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.

    \u0423 \u043D\u0438\u0445 \u0435\u0441\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 \u0442\u0430\u043C, \u0433\u0434\u0435 \u044D\u0442\u043E \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E

    \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B WebAPI \u043F\u043E\u0434\u0432\u0435\u0440\u0436\u0435\u043D \u0442\u0435\u043C \u0436\u0435 \u0441\u043E\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\u043C \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 , \u0447\u0442\u043E \u0438 JavaScript \u0438\u043B\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0431-\u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, same-origin policy), \u043D\u043E \u0438\u043D\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u0445\u0430\u043D\u0438\u0437\u043C\u044B \u0437\u0430\u0449\u0438\u0442\u044B. \u041A \u043F\u0440\u0438\u043C\u0435\u0440\u0443, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0437 \u043D\u0430\u0438\u0431\u043E\u043B\u0435\u0435 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 WebAPI \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430\u043C\u0438, \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u043C\u0438 \u0447\u0435\u0440\u0435\u0437 HTTPS \u0432 \u0441\u0432\u044F\u0437\u0438 \u0441 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 (\u043F\u0440\u0438\u043C\u0435\u0440\u044B: Service Workers \u0438 Push).

    \u041A \u0442\u043E\u043C\u0443 \u0436\u0435, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 WebAPI \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u044E\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043E\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F, \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043A \u043D\u0438\u043C \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u0432\u044B\u0437\u043E\u0432 \u0432 \u043A\u043E\u0434\u0435. \u0412 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043F\u0440\u0438\u043C\u0435\u0440\u0430, \u0432\u044B, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043B\u0438 \u0442\u0430\u043A\u043E\u0435 \u0434\u0438\u0430\u043B\u043E\u0433\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E \u043F\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435 \u043D\u0430\u0448\u0435\u0433\u043E \u043F\u0440\u0438\u043C\u0435\u0440\u0430 Geolocation \u0440\u0430\u043D\u0435\u0435:

    Notifications API \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043E\u0431\u043D\u044B\u043C \u043E\u0431\u0440\u0430\u0437\u043E\u043C:

    \u0417\u0430\u043F\u0440\u043E\u0441\u044B \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0439 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B \u0434\u043B\u044F \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u0438\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u2014 \u043D\u0435 \u0431\u0443\u0434\u044C \u0438\u0445, \u0441\u0430\u0439\u0442\u044B \u043C\u043E\u0433\u043B\u0438 \u0431\u044B \u0441\u043A\u0440\u044B\u0442\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0434\u0438\u0442\u044C \u0432\u0430\u0448\u0435 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u044F \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E \u043D\u0430\u0434\u043E\u0435\u0434\u043B\u0438\u0432\u044B\u0445 \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439.

    \u0418\u0442\u043E\u0433\u0438

    \u041D\u0430 \u0434\u0430\u043D\u043D\u043E\u043C \u044D\u0442\u0430\u043F\u0435, \u0443 \u0432\u0430\u0441 \u0434\u043E\u043B\u0436\u043D\u043E \u0441\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043E \u0442\u043E\u043C, \u0447\u0442\u043E \u0442\u0430\u043A\u043E\u0435 API, \u043A\u0430\u043A \u043E\u043D\u0438 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0438 \u043A\u0430\u043A \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0445 \u0432 \u0441\u0432\u043E\u0451\u043C JavaScript \u043A\u043E\u0434\u0435. \u0412\u0430\u043C \u043D\u0430\u0432\u0435\u0440\u043D\u044F\u043A\u0430 \u043D\u0435 \u0442\u0435\u0440\u043F\u0438\u0442\u0441\u044F \u043D\u0430\u0447\u0430\u0442\u044C \u0434\u0435\u043B\u0430\u0442\u044C \u043F\u043E-\u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u043C\u0443 \u0438\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u044B\u0435 \u0432\u0435\u0449\u0438 \u0441 \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u043C\u0438 API, \u0442\u0430\u043A \u0432\u043F\u0435\u0440\u0451\u0434! \u0412 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0440\u0430\u0437 \u043C\u044B \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u0440\u0430\u0431\u043E\u0442\u0443 \u0441 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E Document Object Model (DOM).

    \u0412 \u044D\u0442\u043E\u043C \u043C\u043E\u0434\u0443\u043B\u0435

    \u041D\u0430\u0447\u043D\u0451\u043C \u0441 \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u0438\u044F \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0441\u043E\u0431\u043E\u0439 API \u043D\u0430 \u0432\u044B\u0441\u043E\u043A\u043E\u043C \u0443\u0440\u043E\u0432\u043D\u0435 \u0438 \u0432\u044B\u044F\u0441\u043D\u0438\u043C, \u043A\u0430\u043A \u043E\u043D\u0438 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442, \u043A\u0430\u043A \u0438\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432 \u0441\u0432\u043E\u0438\u0445 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430\u0445 \u0438 \u043A\u0430\u043A \u043E\u043D\u0438 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B. \u0422\u0430\u043A\u0436\u0435 \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u0432\u0438\u0434\u044B API \u0438 \u0438\u0445 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0435.

    \\n\\n

    \\n \\n \\n

    \\n

    \\n

    \\n

    \\n

    \\n

    \\n

    \\n

    \\n

    \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0435 \u0437\u043D\u0430\u043D\u0438\u044F: \u0411\u0430\u0437\u043E\u0432\u0430\u044F \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043D\u0430\u044F \u0433\u0440\u0430\u043C\u043E\u0442\u043D\u043E\u0441\u0442\u044C, \u043F\u043E\u043D\u0438\u043C\u0430\u043D\u0438\u0435 \u043E\u0441\u043D\u043E\u0432 HTML \u0438 CSS,\u00A0 \u043E\u0441\u043D\u043E\u0432\u044B JavaScript (\u0441\u043C. \u043F\u0435\u0440\u0432\u044B\u0435 \u0448\u0430\u0433\u0438, building blocks, \u043E\u0431\u044A\u0435\u043A\u0442\u044B JavaScript).
    \u0426\u0435\u043B\u044C: \u041F\u043E\u0437\u043D\u0430\u043A\u043E\u043C\u0438\u0442\u044C\u0441\u044F \u0441 API, \u0432\u044B\u044F\u0441\u043D\u0438\u0442\u044C \u0447\u0442\u043E \u043E\u043D\u0438 \u043C\u043E\u0433\u0443\u0442 \u0434\u0435\u043B\u0430\u0442\u044C \u0438 \u043A\u0430\u043A \u0438\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C.

    \\n\\n

    \u0427\u0442\u043E \u0442\u0430\u043A\u043E\u0435 API?

    \u0418\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043F\u0440\u0438\u043A\u043B\u0430\u0434\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (Application Programming Interfaces, APIs) — \u044D\u0442\u043E \u0433\u043E\u0442\u043E\u0432\u044B\u0435 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u044F\u0437\u044B\u043A\u0430 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0443 \u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0441\u043B\u043E\u0436\u043D\u044B\u0439 \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0441 \u043C\u0435\u043D\u044C\u0448\u0438\u043C\u0438 \u0443\u0441\u0438\u043B\u0438\u044F\u043C\u0438. \u041E\u043D\u0438 \\\»\u0441\u043A\u0440\u044B\u0432\u0430\u044E\u0442\\\» \u0431\u043E\u043B\u0435\u0435 \u0441\u043B\u043E\u0436\u043D\u044B\u0439 \u043A\u043E\u0434 \u043E\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0441\u0442\u0430, \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u044F \u043F\u0440\u043E\u0441\u0442\u043E\u0442\u0443 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F.

    \u0414\u043B\u044F \u043B\u0443\u0447\u0448\u0435\u0433\u043E \u043F\u043E\u043D\u0438\u043C\u0430\u043D\u0438\u044F \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u044E \u0441 \u0434\u043E\u043C\u0430\u0448\u043D\u0438\u043C\u0438 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u0441\u0435\u0442\u044F\u043C\u0438. \u041A\u043E\u0433\u0434\u0430 \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043A\u0430\u043A\u043E\u0439-\u0442\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043F\u0440\u0438\u0431\u043E\u0440, \u0432\u044B \u043F\u0440\u043E\u0441\u0442\u043E \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442\u0435 \u0435\u0433\u043E \u043A \u0440\u043E\u0437\u0435\u0442\u043A\u0435, \u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442. \u0412\u044B \u043D\u0435 \u043F\u044B\u0442\u0430\u0435\u0442\u0435\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u0432\u043E\u0434\u0430 \u043D\u0430\u043F\u0440\u044F\u043C\u0443\u044E \u043A \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0443 \u0442\u043E\u043A\u0430 \u2014 \u0434\u0435\u043B\u0430\u0442\u044C \u044D\u0442\u043E \u0431\u0435\u0441\u043F\u043E\u043B\u0435\u0437\u043D\u043E \u0438, \u0435\u0441\u043B\u0438 \u0432\u044B \u043D\u0435 \u044D\u043B\u0435\u043A\u0442\u0440\u0438\u043A, \u0441\u043B\u043E\u0436\u043D\u043E \u0438 \u043E\u043F\u0430\u0441\u043D\u043E.

    \u0422\u043E\u0447\u043D\u043E \u0442\u0430\u043A\u0436\u0435, \u0435\u0441\u043B\u0438 \u043C\u044B \u0445\u043E\u0442\u0438\u043C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C 3D \u0433\u0440\u0430\u0444\u0438\u043A\u0443, \u0433\u043E\u0440\u0430\u0437\u0434\u043E \u043B\u0435\u0433\u0447\u0435 \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u044D\u0442\u043E \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C API, \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u0445 \u043D\u0430 \u044F\u0437\u044B\u043A\u0430\u0445 \u0432\u044B\u0441\u043E\u043A\u043E\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A JavaScript \u0438\u043B\u0438 Python.

    API \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0439 \u0447\u0430\u0441\u0442\u0438 JavaScript

    \u0414\u043B\u044F JavaScript \u043D\u0430 \u0441\u0442\u043E\u0440\u043E\u043D\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430, \u0432 \u0447\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u0438, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E API. \u041E\u043D\u0438 \u043D\u0435 \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0447\u0430\u0441\u0442\u044C\u044E \u044F\u0437\u044B\u043A\u0430, \u0430 \u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u044B \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0444\u0443\u043D\u043A\u0446\u0438\u0439 JavaScript \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u0432\u0430\u0448\u0438 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u043F\u0440\u0438 \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u0438\u0438 \u043A\u043E\u0434\u0430. \u0418\u0445 \u043C\u043E\u0436\u043D\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u044C \u043D\u0430 \u0434\u0432\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438:

    \\n\\n

      \\n
    • API \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u044B \u0432 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043D\u043E\u0439 \u0441\u0440\u0435\u0434\u044B \u0434\u043B\u044F \u043E\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043B\u0435\u043D\u0438\u044F \u0431\u043E\u043B\u0435\u0435 \u0441\u043B\u043E\u0436\u043D\u044B\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u044D\u0442\u0438\u043C\u0438 \u0434\u0430\u043D\u043D\u044B\u043C\u0438. \u041A \u043F\u0440\u0438\u043C\u0435\u0440\u0443, API \u0413\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 (Geolocation API) \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0440\u043E\u0441\u0442\u044B\u0435 \u0432 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 JavaScript \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0434\u0430\u043D\u043D\u044B\u043C\u0438 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F, \u0442\u0430\u043A \u0447\u0442\u043E \u0432\u044B \u0441\u043C\u043E\u0436\u0435\u0442\u0435, \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C, \u043E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u0441\u0432\u043E\u0435 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0430 \u043A\u0430\u0440\u0442\u0435 Google Map. \u041D\u0430 \u0441\u0430\u043C\u043E\u043C \u0434\u0435\u043B\u0435, \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0441\u043B\u043E\u0436\u043D\u044B\u0439 \u043D\u0438\u0437\u043A\u043E\u0443\u0440\u043E\u0432\u043D\u0435\u0432\u044B\u0439 \u043A\u043E\u0434 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043D\u0430 C++) \u0434\u043B\u044F \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u043A \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0443 GPS (\u0438\u043B\u0438 \u043B\u044E\u0431\u043E\u043C\u0443 \u0434\u0440\u0443\u0433\u043E\u043C\u0443 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0443 \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438), \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0434\u0430\u043D\u043D\u044B\u0445 \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0432\u0430\u0448\u0435\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043E\u0439, \u043D\u043E, \u043A\u0430\u043A \u0431\u044B\u043B\u043E \u0441\u043A\u0430\u0437\u0430\u043D\u043E \u0432\u044B\u0448\u0435, \u044D\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0438 \u0441\u043A\u0440\u044B\u0442\u044B \u0431\u043B\u0430\u0433\u043E\u0434\u0430\u0440\u044F API. \\n
    • \u0421\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0435 API \u043D\u0435 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u044B \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E. \u0422\u0430\u043A\u0438\u0435 API \u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u043D\u0438\u0445 \u043E\u0431\u044B\u0447\u043D\u043E \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0438\u0441\u043A\u0430\u0442\u044C \u0432 \u0438\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0435. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, Twitter API \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0440\u0430\u0437\u043C\u0435\u0449\u0430\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 \u0442\u0432\u0438\u0442\u044B (tweets) \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0435. \u0412 \u0434\u0430\u043D\u043D\u043E\u043C API \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0451\u043D \u043D\u0430\u0431\u043E\u0440 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0439, \u043E\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0437\u0430\u043F\u0440\u043E\u0441\u044B \u043A \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043C Twitter \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0449\u0438\u0445 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0451\u043D\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435. \\n

    \\n\\n\\n\\n\\n\\n

    \u0412\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 JavaScript, API \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 JavaScript

    \u0418\u0442\u0430\u043A, \u0432\u044B\u0448\u0435 \u043C\u044B \u043F\u043E\u0433\u043E\u0432\u043E\u0440\u0438\u043B\u0438 \u043E \u0442\u043E\u043C, \u0447\u0442\u043E \u0442\u0430\u043A\u043E\u0435 JavaScript API \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438 \u043A\u0430\u043A \u043E\u043D\u0438 \u0441\u0432\u044F\u0437\u0430\u043D\u044B \u0441 \u044F\u0437\u044B\u043A\u043E\u043C JavaScript. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043F\u0435\u0440\u044C \u0442\u0435\u0437\u0438\u0441\u043D\u043E \u0437\u0430\u043F\u0438\u0448\u0435\u043C \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043F\u043E\u043D\u044F\u0442\u0438\u044F \u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u043C \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 JavaScript:

    \\n\\n

      \\n
    • JavaScript \u2014 \u042F\u0437\u044B\u043A \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0435\u0432 \u0432\u044B\u0441\u043E\u043A\u043E\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F, \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0439 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446/\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439. \u041E\u0442\u043C\u0435\u0442\u0438\u043C, \u0447\u0442\u043E JavaScript \u0442\u0430\u043A\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043D\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0445 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0430\u0445, \u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A Node. \u041D\u043E \u043F\u043E\u043A\u0430 \u043D\u0435 \u0431\u0443\u0434\u0435\u043C\u00A0\u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u044D\u0442\u043E\u043C. \\n
    • API \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (Browser APIs) \u2014 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438, \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u044F\u0437\u044B\u043A\u0430 JavaScript, \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044B\u0435 \u0434\u043B\u044F \u043E\u0431\u043B\u0435\u0433\u0447\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430. \\n
    • \u0421\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0435 API (Third party APIs) \u2014 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438, \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u0432 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0435 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B (\u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A Twitter, Facebook) \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0435 \u0432\u0430\u043C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0447\u0430\u0441\u0442\u044C \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430 \u044D\u0442\u0438\u0445 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C \u0432 \u0441\u0432\u043E\u0438\u0445 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0445 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430\u0445/\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 \u0422\u0432\u0438\u0442\u044B \u043D\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435). \\n
    • \u0411\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0438 JavaScript \u2014 \u041E\u0431\u044B\u0447\u043D\u043E \u043E\u0434\u0438\u043D \u0438\u043B\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0444\u0430\u0439\u043B\u043E\u0432, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 (custom) \u0444\u0443\u043D\u043A\u0446\u0438\u0438 . \u0422\u0430\u043A\u0438\u0435 \u0444\u0430\u0439\u043B\u044B \u043C\u043E\u0436\u043D\u043E \u043F\u0440\u0438\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u043A \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435, \u0447\u0442\u043E\u0431\u044B \u0443\u0441\u043A\u043E\u0440\u0438\u0442\u044C \u0438\u043B\u0438 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430. \u041F\u0440\u0438\u043C\u0435\u0440\u044B: jQuery, Mootools \u0438 React. \\n
    • JavaScript \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438 (frameworks) \u2014 \u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0448\u0430\u0433 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E\u0441\u043B\u0435 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A. \u0424\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438 JavaScript (\u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A Angular \u0438 Ember) \u0441\u0442\u0440\u0435\u043C\u044F\u0442\u0441\u044F \u043A \u0442\u043E\u043C\u0443, \u0447\u0442\u043E\u0431\u044B \u0431\u044B\u0442\u044C \u043D\u0430\u0431\u043E\u0440\u043E\u043C HTML, CSS, JavaScript \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0439, \u043F\u043E\u0441\u043B\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043C\u043E\u0436\u043D\u043E \\\»\u043F\u0438\u0441\u0430\u0442\u044C\\\» \u0432\u0435\u0431-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0441 \u043D\u0443\u043B\u044F. \u0413\u043B\u0430\u0432\u043D\u043E\u0435 \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0435 \u043C\u0435\u0436\u0434\u0443 \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0430\u043C\u0438 \u0438 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0430\u043C\u0438 — \\\»\u041E\u0431\u0440\u0430\u0442\u043D\u043E\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F\\\» ( \u201CInversion of Control\u201D ). \u0412\u044B\u0437\u043E\u0432 \u043C\u0435\u0442\u043E\u0434\u0430 \u0438\u0437 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0438 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u043F\u043E \u0442\u0440\u0435\u0431\u043E\u0432\u0430\u043D\u0438\u044E \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0430. \u041F\u0440\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0430 — \u043D\u0430\u043E\u0431\u043E\u0440\u043E\u0442, \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442 \u0432\u044B\u0437\u043E\u0432 \u043A\u043E\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0430. \\n

    \\n\\n

    \u041D\u0430 \u0447\u0442\u043E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u044B API?

    \u0428\u0438\u0440\u043E\u043A\u043E\u0435 \u0440\u0430\u0437\u043D\u043E\u043E\u0431\u0440\u0430\u0437\u0438\u0435 API \u0432 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u043D\u0430\u0434\u0435\u043B\u0438\u0442\u044C \u0432\u0430\u0448\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u043E\u043B\u044C\u0448\u0438\u043C\u0438 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044F\u043C\u0438. \u0414\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 MDN APIs index page.

    \u0420\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 API \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430

    \u0412 \u0447\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u0438, \u043A \u043D\u0430\u0438\u0431\u043E\u043B\u0435\u0435 \u0447\u0430\u0441\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u043C \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F\u043C API (\u0438 \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u044B \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u0434\u0430\u043B\u0435\u0435 \u0432 \u044D\u0442\u043E\u043C \u043C\u043E\u0434\u0443\u043B\u0435) \u043E\u0442\u043D\u043E\u0441\u044F\u0442\u0441\u044F :

    \\n\\n

      \\n
    • API \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u043C\u0438, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u043C\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u042F\u0432\u043D\u044B\u0439 \u043F\u0440\u0438\u043C\u0435\u0440 — DOM (Document Object Model) API, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0439 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u0441 HTML \u0438 CSS \u2014 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C, \u0443\u0434\u0430\u043B\u044F\u0442\u044C \u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C HTML, \u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C \u0432\u0438\u0434 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0438 \u0442.\u0434. \u041B\u044E\u0431\u043E\u0435 \u0432\u0441\u043F\u043B\u044B\u0432\u0430\u044E\u0449\u0435\u0435 \u043E\u043A\u043D\u043E \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 \u0438\u043B\u0438 \u043F\u043E\u044F\u0432\u043B\u044F\u044E\u0449\u0435\u0435\u0441\u044F \\\»\u043D\u0430 \u0445\u043E\u0434\u0443\\\» \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 — \u0432\u0441\u0451 \u044D\u0442\u043E \u0431\u043B\u0430\u0433\u043E\u0434\u0430\u0440\u044F DOM. \u0423\u0437\u043D\u0430\u0439\u0442\u0435 \u0431\u043E\u043B\u044C\u0448\u0435 \u043E\u0431 \u044D\u0442\u043E\u0439 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438 API \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 \u0420\u0430\u0431\u043E\u0442\u0430 \u0441 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u043C\u0438. \\n
    • API, \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043E\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0447\u0430\u0441\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B. \u042D\u0442\u0430, \u043A\u0430\u0437\u0430\u043B\u043E\u0441\u044C \u0431\u044B, \u043C\u0430\u043B\u0430\u044F \u0434\u0435\u0442\u0430\u043B\u044C \u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043E\u0433\u0440\u043E\u043C\u043D\u043E\u0435 \u0432\u043B\u0438\u044F\u043D\u0438\u0435 \u043D\u0430 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0438 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0441\u0430\u0439\u0442\u043E\u0432, \u0442\u0430\u043A \u043A\u0430\u043A \u043D\u0435\u0442 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044C \u0432\u0441\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0446\u0435\u043B\u0438\u043A\u043E\u043C, \u0435\u0441\u043B\u0438 \u0432\u0430\u043C \u043D\u0443\u0436\u043D\u043E \u043F\u0440\u043E\u0441\u0442\u043E \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0442\u043E\u0432\u0430\u0440\u043E\u0432 \u0438\u043B\u0438 \u043D\u043E\u0432\u044B\u0445 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0438\u0441\u0442\u043E\u0440\u0438\u0439. \u042D\u0442\u043E \u0442\u0430\u043A\u0436\u0435 \u0441\u0434\u0435\u043B\u0430\u0435\u0442 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u0441\u0430\u0439\u0442 \u0431\u043E\u043B\u0435\u0435 \u043E\u0442\u0437\u044B\u0432\u0447\u0438\u0432\u044B\u043C \u0438 \\\»\u0436\u0438\u0432\u044B\u043C\\\». \u0421\u043F\u0438\u0441\u043E\u043A API, \u0431\u043B\u0430\u0433\u043E\u0434\u0430\u0440\u044F \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u044D\u0442\u043E \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442: XMLHttpRequest \u0438 Fetch API. \u0412\u044B \u0442\u0430\u043A\u0436\u0435 \u043C\u043E\u0433\u043B\u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044C \u0442\u0435\u0440\u043C\u0438\u043D Ajax, \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u044E\u0449\u0438\u0439 \u044D\u0442\u0443 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u044E. \u0423\u0437\u043D\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435 \u043E\u0431 \u044D\u0442\u043E\u0439 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438 API \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 \u041F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u043E\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \\n
    • API \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0433\u0440\u0430\u0444\u0438\u043A\u043E\u0439 \u0448\u0438\u0440\u043E\u043A\u043E \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u043C\u0438,\u00A0 \u0441\u0430\u043C\u044B\u0435 \u043F\u043E\u043F\u0443\u043B\u044F\u0440\u043D\u044B\u0435: Canvas \u0438 WebGL, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0435\u00A0\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u043E \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u043F\u0438\u043A\u0441\u0435\u043B\u044F\u0445, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044F \u0432 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0435 HTML\u00A0 <>\u00A0 \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F 2D \u0438 3D \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043D\u0430\u0440\u0438\u0441\u043E\u0432\u0430\u0442\u044C \u0444\u0438\u0433\u0443\u0440\u044B, \u0441\u043A\u0430\u0436\u0435\u043C, \u043F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u0438\u043A\u0438 \u0438\u043B\u0438 \u043A\u0440\u0443\u0433\u0438, \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0432 canvas \u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u043A \u043D\u0435\u043C\u0443 \u0444\u0438\u043B\u044C\u0442\u0440\u044B, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A \u0441\u0435\u043F\u0438\u044F \u0438\u043B\u0438 \u043E\u0442\u0442\u0435\u043D\u043A\u0438 \u0441\u0435\u0440\u043E\u0433\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E Canvas API, \u0438\u043B\u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u043B\u043E\u0436\u043D\u043E\u0435 3D-\u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441 \u043E\u0441\u0432\u0435\u0449\u0435\u043D\u0438\u0435\u043C \u0438 \u0442\u0435\u043A\u0441\u0442\u0443\u0440\u0430\u043C\u0438, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F WebGL. \u0422\u0430\u043A\u0438\u0435 API \u0447\u0430\u0441\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u0432 \u0441\u043E\u0447\u0435\u0442\u0430\u043D\u0438\u0438 \u0441 API \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0446\u0438\u043A\u043B\u043E\u0432 (\u0442\u0430\u043A\u0438\u0445 \u043A\u0430\u043A <>) \u0438 \u0434\u0440\u0443\u0433\u0438\u043C\u0438 \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u043F\u043E\u0441\u0442\u043E\u044F\u043D\u043D\u043E \u043C\u0435\u043D\u044F\u044E\u0449\u0435\u0433\u043E\u0441\u044F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043D\u0430 \u044D\u043A\u0440\u0430\u043D\u0435, \u043A\u0430\u043A \u0432 \u043C\u0443\u043B\u044C\u0442\u0444\u0438\u043B\u044C\u043C\u0430\u0445 \u0438\u043B\u0438 \u0438\u0433\u0440\u0430\u0445 . \\n
    • \u0410\u0443\u0434\u0438\u043E \u0438 \u0412\u0438\u0434\u0435\u043E API \u043A\u0430\u043A <>, Web Audio API, \u0438 WebRTC \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0442 \u0434\u0435\u043B\u0430\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0438\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u044B\u0435 \u0432\u0435\u0449\u0438 \u0441 \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (User Interface, UI) \u0434\u043B\u044F \u043F\u0440\u043E\u0438\u0433\u0440\u044B\u0432\u0430\u043D\u0438\u044F \u0430\u0443\u0434\u0438\u043E/\u0432\u0438\u0434\u0435\u043E, \u0432\u044B\u0432\u043E\u0434 \u043D\u0430 \u044D\u043A\u0440\u0430\u043D \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043E\u0432, \u0437\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0442\u044C \u0432\u0438\u0434\u0435\u043E \u0441 \u0432\u0435\u0431-\u043A\u0430\u043C\u0435\u0440\u044B \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0432 canvas (\u0441\u043C. \u0432\u044B\u0448\u0435) \u0438\u043B\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043D\u0430 \u0434\u0440\u0443\u0433\u043E\u0439 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440 \u0432 \u0432\u0438\u0434\u0435\u043E-\u043A\u043E\u043D\u0444\u0435\u0440\u0435\u043D\u0446\u0438\u0438, \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C \u0437\u0432\u0443\u043A\u043E\u0432\u044B\u0435 \u044D\u0444\u0444\u0435\u043A\u0442\u044B \u043A \u0430\u0443\u0434\u0438\u043E-\u0444\u0430\u0439\u043B\u0430\u043C (\u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A gain, distortion, panning \u0438 \u0442.\u0434.). \\n
    • API \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 — \u0432 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u043C, API \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0438 \u0441\u0447\u0438\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u0434\u0430\u043D\u043D\u044B\u0445 \u0441 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0443\u0434\u043E\u0431\u043D\u044B\u043C \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0432\u0435\u0431-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439 \u043E\u0431\u0440\u0430\u0437\u043E\u043C. \u041C\u044B \u0443\u0436\u0435 \u0433\u043E\u0432\u043E\u0440\u0438\u043B\u0438 \u043E\u0431 API \u0413\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0435\u043C \u0441\u0447\u0438\u0442\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430. \u0414\u0440\u0443\u0433\u0438\u0435 \u043F\u0440\u0438\u043C\u0435\u0440\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u043E \u043F\u043E\u044F\u0432\u0438\u0432\u0448\u0435\u043C\u0441\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0438 \u0434\u043B\u044F \u0432\u0435\u0431-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0445 \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439 (\u0441\u043C. Notifications API) \u0438\u043B\u0438 \u0432\u0438\u0431\u0440\u0430\u0446\u0438\u0438 (\u0441\u043C. Vibration API). \\n
    • API \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0434\u0430\u043D\u043D\u044B\u0445 \u043D\u0430 \u0441\u0442\u043E\u0440\u043E\u043D\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u043F\u0440\u0438\u043E\u0431\u0440\u0435\u0442\u0430\u044E\u0442 \u0432\u0441\u0451 \u0431\u043E\u043B\u044C\u0448\u0435\u0435 \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0432 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u2014 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043D\u0430 \u0441\u0442\u043E\u0440\u043E\u043D\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u043E\u0447\u0435\u043D\u044C \u043F\u043E\u043B\u0435\u0437\u043D\u0430, \u043A\u043E\u0433\u0434\u0430 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u0441\u0432\u043E\u0451 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043C\u0435\u0436\u0434\u0443 \u043F\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u043C\u0438 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B, \u0438\u043B\u0438 \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C, \u043A\u043E\u0433\u0434\u0430 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043D\u0435 \u0432 \u0441\u0435\u0442\u0438. \u0412 \u0434\u0430\u043D\u044B\u0439 \u043C\u043E\u043C\u0435\u043D\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u043D\u0435\u043C\u0430\u043B\u043E \u0442\u0430\u043A\u0438\u0445 API. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u0440\u043E\u0441\u0442\u043E\u0435 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u0438\u043C\u044F/\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (name/value)\u00A0 Web Storage API \u0438\u043B\u0438 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u0442\u0430\u0431\u043B\u0438\u0446 IndexedDB API. \\n

    \\n\\n

    \u0420\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0435 API

    \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0445 API; \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0437 \u043D\u0430\u0438\u0431\u043E\u043B\u0435\u0435 \u043F\u043E\u043F\u0443\u043B\u044F\u0440\u043D\u044B\u0445, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B \u0440\u0430\u043D\u043E \u0438\u043B\u0438 \u043F\u043E\u0437\u0434\u043D\u043E \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C, \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442:

    \\n\\n

      \\n
    • Twitter API \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0442\u0430\u043A\u043E\u0433\u043E \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430, \u043A\u0430\u043A \u043F\u043E\u043A\u0430\u0437 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0445 \u0442\u0432\u0438\u0442\u043E\u0432 \u043D\u0430 \u0441\u0430\u0439\u0442\u0435. \\n
    • Google Maps API \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u043A\u0430\u0440\u0442\u0430\u043C\u0438 \u043D\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435 (\u0438\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u043E, \u0447\u0442\u043E Google Maps \u0442\u0430\u043A\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u044D\u0442\u043E\u0442 API). \u0422\u0435\u043F\u0435\u0440\u044C \u044D\u0442\u043E \u0446\u0435\u043B\u044B\u0439 \u043D\u0430\u0431\u043E\u0440 API, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u043E\u0436\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u0441 \u0448\u0438\u0440\u043E\u043A\u0438\u043C \u0441\u043F\u0435\u043A\u0442\u0440\u043E\u043C \u0437\u0430\u0434\u0430\u0447, \u043A\u0430\u043A \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u0443\u0435\u0442 Google Maps API Picker. \\n
    • \u041D\u0430\u0431\u043E\u0440 Facebook API \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u0447\u0430\u0441\u0442\u0438 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B Facebook \u0432 \u0432\u0430\u0448\u0435\u043C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438, \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044F, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0432\u0445\u043E\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0441 \u043B\u043E\u0433\u0438\u043D\u043E\u043C Facebook, \u043E\u043F\u043B\u0430\u0442\u044B \u043F\u043E\u043A\u0443\u043F\u043E\u043A \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438, \u0434\u0435\u043C\u043E\u043D\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u0440\u0435\u043A\u043B\u0430\u043C\u044B \u0438 \u0442.\u0434. \\n
    • YouTube API, \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0439 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044C \u0432\u0438\u0434\u0435\u043E \u0441 YouTube \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u0441\u0430\u0439\u0442\u0435, \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u044C \u043F\u043E\u0438\u0441\u043A, \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u043F\u043B\u044D\u0439\u043B\u0438\u0441\u0442\u044B \u0438 \u0442.\u0434. \\n
    • Twilio API — \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A \u0434\u043B\u044F \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043D\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430 \u0433\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0439 \u0438 \u0432\u0438\u0434\u0435\u043E \u0441\u0432\u044F\u0437\u0438 \u0432 \u0432\u0430\u0448\u0435\u043C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438, \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 SMS/MMS \u0438\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0438 \u0442.\u0434. \\n

    \\n\\n

    Note: \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043D\u0430\u0439\u0442\u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u0433\u043E\u0440\u0430\u0437\u0434\u043E \u0431\u043E\u043B\u044C\u0448\u0435\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0445 API \u0432 Programmable Web API directory.

    \u041A\u0430\u043A \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 API?

    \u0420\u0430\u0431\u043E\u0442\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 JavaScript API \u043D\u0435\u043C\u043D\u043E\u0433\u043E \u043E\u0442\u043B\u0438\u0447\u0430\u0435\u0442\u0441\u044F, \u043D\u043E, \u0432 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u043C, \u0443 \u043D\u0438\u0445 \u043F\u043E\u0445\u043E\u0436\u0438\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \u0438 \u043F\u0440\u0438\u043D\u0446\u0438\u043F \u0440\u0430\u0431\u043E\u0442\u044B.

    \u041E\u043D\u0438 \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u044B \u043D\u0430 \u043E\u0431\u044A\u0435\u043A\u0442\u0430\u0445

    \u0412\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 API \u0432 \u043A\u043E\u0434\u0435 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043E\u0434\u0438\u043D \u0438\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 JavaScript, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u043B\u0443\u0436\u0430\u0442 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430\u043C\u0438 \u0434\u043B\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438, \u0441 \u043A\u043E\u0442\u043E\u0440\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 API (\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044F \u0432 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u0430), \u0438 \u0440\u0435\u0430\u043B\u0438\u0437\u0443\u044E\u0442 \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 API (\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044F \u0432 \u043C\u0435\u0442\u043E\u0434\u0430\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u0430).

    Note: \u0415\u0441\u043B\u0438 \u0432\u0430\u043C \u0435\u0449\u0451 \u043D\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u043E\u0431\u044A\u0435\u043A\u0442\u044B, \u0441\u043E\u0432\u0435\u0442\u0443\u0435\u043C \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434 \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044C \u043C\u043E\u0434\u0443\u043B\u044C JavaScript objects \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C.

    \u0412\u0435\u0440\u043D\u0451\u043C\u0441\u044F \u043A \u043F\u0440\u0438\u043C\u0435\u0440\u0443 \u0441 API \u0413\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 \u2014 \u043E\u0447\u0435\u043D\u044C \u043F\u0440\u043E\u0441\u0442\u043E\u0439 API, \u0441\u043E\u0441\u0442\u043E\u044F\u0449\u0438\u0439 \u0438\u0437 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043F\u0440\u043E\u0441\u0442\u044B\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432:

    \\n\\n

      \\n
    • <>, \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0440\u0438 \u043C\u0435\u0442\u043E\u0434\u0430 \u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044F \u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0433\u0435\u043E\u0434\u0430\u043D\u043D\u044B\u0445. \\n
    • <>, \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430 \u0432 \u0437\u0430\u0434\u0430\u043D\u043D\u044B\u0439 \u043C\u043E\u043C\u0435\u043D\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u2014 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 <> — \u043E\u0431\u044A\u0435\u043A\u0442, \u0445\u0440\u0430\u043D\u044F\u0449\u0438\u0439 \u043A\u043E\u043E\u0440\u0434\u0438\u043D\u0430\u0442\u044B \u0438 \u043E\u0442\u043C\u0435\u0442\u043A\u0443 \u043E \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u0432\u0440\u0435\u043C\u0435\u043D\u0438. \\n
    • <>, \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043C\u043D\u043E\u0433\u043E \u043F\u043E\u043B\u0435\u0437\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 \u043E \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0448\u0438\u0440\u043E\u0442\u0443 \u0438 \u0434\u043E\u043B\u0433\u043E\u0442\u0443, \u0432\u044B\u0441\u043E\u0442\u0443, \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0438 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u044F \u0438 \u0442.\u0434. \\n

    \\n\\n

    \u0422\u0430\u043A \u043A\u0430\u043A \u0436\u0435 \u044D\u0442\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u044B \u0432\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044E\u0442? \u0415\u0441\u043B\u0438 \u0432\u044B \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u043D\u0430 \u043D\u0430\u0448 \u043F\u0440\u0438\u043C\u0435\u0440 maps-example.html (see it live also), \u0432\u044B \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043A\u043E\u0434:

    Note: \u041A\u043E\u0433\u0434\u0430 \u0432\u044B \u0432\u043F\u0435\u0440\u0432\u044B\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u044B\u0439 \u0432\u044B\u0448\u0435 \u043F\u0440\u0438\u043C\u0435\u0440, \u043F\u043E\u044F\u0432\u0438\u0442\u0441\u044F \u0434\u0438\u0430\u043B\u043E\u0433\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E, \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u044E\u0449\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043D\u0430 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043D\u043D\u044B\u0445 \u043E \u043C\u0435\u0441\u0442\u043E\u043D\u0430\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0438 \u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044E (\u0441\u043C. \u0440\u0430\u0437\u0434\u0435\u043B <> \u0434\u0430\u043B\u0435\u0435 \u0432 \u044D\u0442\u043E\u0439 \u0441\u0442\u0430\u0442\u044C\u0435). \u0412\u0430\u043C \u043D\u0443\u0436\u043D\u043E \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043D\u043D\u044B\u0445, \u0447\u0442\u043E\u0431\u044B \u0438\u043C\u0435\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u0441\u0432\u043E\u0451 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0430 \u043A\u0430\u0440\u0442\u0435. \u0415\u0441\u043B\u0438 \u0432\u044B \u0432\u0441\u0451 \u0435\u0449\u0451 \u043D\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u043A\u0430\u0440\u0442\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E; \u044D\u0442\u043E \u0434\u0435\u043B\u0430\u0435\u0442\u0441\u044F \u0440\u0430\u0437\u043D\u044B\u043C\u0438 \u0441\u043F\u043E\u0441\u043E\u0431\u0430\u043C\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u043E\u0442 \u0432\u0430\u0448\u0435\u0433\u043E \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430; \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0432 Firefox \u043F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 > Tools > Page Info > Permissions, \u0437\u0430\u0442\u0435\u043C \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 Share Location; \u0432 Chrome \u043F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 Settings > Privacy > Show advanced settings > Content settings \u0438 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 Location.

    \u0412\u043E-\u043F\u0435\u0440\u0432\u044B\u0445, \u043C\u044B \u0445\u043E\u0442\u0438\u043C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 <>, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0430\u0448\u0435\u0433\u043E \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430. \u0414\u043E\u0441\u0442\u0443\u043F \u043A \u043E\u0431\u044A\u0435\u043A\u0442\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 <> \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 <>, \u0442\u0430\u043A \u0447\u0442\u043E \u043C\u044B \u043D\u0430\u0447\u043D\u0451\u043C \u0441

    \u042D\u0442\u043E \u044D\u043A\u0432\u0438\u0432\u0430\u043B\u0435\u043D\u0442\u043D\u043E \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u043A\u043E\u0434\u0443

    \u041D\u043E \u043C\u044B \u043C\u043E\u0436\u0435\u043C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0442\u043E\u0447\u043A\u0438, \u0447\u0442\u043E\u0431\u044B \u0441\u0432\u044F\u0437\u0430\u0442\u044C \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u043C/\u043C\u0435\u0442\u043E\u0434\u0430\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0432 \u043E\u0434\u043D\u043E \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435, \u0443\u043C\u0435\u043D\u044C\u0448\u0430\u044F \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0440\u043E\u043A \u0432 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0435.

    \u041C\u0435\u0442\u043E\u0434 <> \u0438\u043C\u0435\u0435\u0442 \u043E\u0434\u0438\u043D \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 — \u0430\u043D\u043E\u043D\u0438\u043C\u043D\u0443\u044E \u0444\u0443\u043D\u043A\u0446\u0438\u044E, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F, \u043A\u043E\u0433\u0434\u0430 \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0441\u0447\u0438\u0442\u0430\u043D\u043E. \u0421\u0430\u043C\u0430 \u044D\u0442\u0430 \u0444\u0443\u043D\u043A\u0446\u0438\u044F \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440, \u044F\u0432\u043B\u044F\u044E\u0449\u0438\u0439\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C <>, \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u043C \u0434\u0430\u043D\u043D\u044B\u0435 \u043E \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0438.

    Note: \u0424\u0443\u043D\u043A\u0446\u0438\u044F, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u043D\u0430\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439 \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0433\u043E \u0432\u044B\u0437\u043E\u0432\u0430 (callback function).

    \u0422\u0430\u043A\u043E\u0439 \u043F\u043E\u0434\u0445\u043E\u0434, \u043F\u0440\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0444\u0443\u043D\u043A\u0446\u0438\u044F \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0442\u043E\u0433\u0434\u0430, \u043A\u043E\u0433\u0434\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0431\u044B\u043B\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430, \u043E\u0447\u0435\u043D\u044C \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0451\u043D \u0432 JavaScript API \u2014 \u0443\u0431\u0435\u0434\u0438\u0442\u044C\u0441\u044F, \u0447\u0442\u043E \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0431\u044B\u043B\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430 \u043F\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043C \u043F\u044B\u0442\u0430\u0442\u044C\u0441\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043E\u043D\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438. \u0422\u0430\u043A\u0438\u0435 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0430\u043A\u0436\u0435 \u043D\u0430\u0437\u044B\u0432\u0430\u044E\u0442 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u043C\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F\u043C\u0438 (asynchronous operations). \u0423\u0447\u0438\u0442\u044B\u0432\u0430\u044F, \u0447\u0442\u043E \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u0438\u0437 \u0432\u043D\u0435\u0448\u043D\u0435\u0433\u043E \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430 (GPS-\u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430 \u0438\u043B\u0438 \u0434\u0440\u0443\u0433\u043E\u0433\u043E \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430 \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438), \u043C\u044B \u043D\u0435 \u043C\u043E\u0436\u0435\u043C \u0431\u044B\u0442\u044C \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0441\u0447\u0438\u0442\u044B\u0432\u0430\u043D\u0438\u044F \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430 \u0432\u043E\u0432\u0440\u0435\u043C\u044F \u0438 \u043C\u044B \u0441\u043C\u043E\u0436\u0435\u043C \u043D\u0435\u0437\u0430\u043C\u0435\u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C\u044B\u0435 \u0435\u044E \u0434\u0430\u043D\u043D\u044B\u0435. \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u0442\u0430\u043A\u043E\u0439 \u043A\u043E\u0434 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C:

    \u0415\u0441\u043B\u0438 \u043F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0435\u0449\u0451 \u043D\u0435 \u0432\u0435\u0440\u043D\u0443\u043B\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442, \u0432\u0442\u043E\u0440\u0430\u044F \u0432\u044B\u0437\u043E\u0432\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443 \u0438\u0437-\u0437\u0430 \u0442\u043E\u0433\u043E, \u0447\u0442\u043E \u0434\u0430\u043D\u043D\u044B\u0435 \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 \u0435\u0449\u0451 \u043D\u0435 \u0441\u0442\u0430\u043B\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B. \u041F\u043E \u044D\u0442\u043E\u0439 \u043F\u0440\u0438\u0447\u0438\u043D\u0435, API, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0435 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0435 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C <>, \u0438\u043B\u0438 \u0431\u043E\u043B\u0435\u0435 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u041E\u0431\u0435\u0449\u0430\u043D\u0438\u0439(Promises), \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043F\u043E\u044F\u0432\u0438\u043B\u0430\u0441\u044C \u0432 ECMAScript 6 \u0438 \u0448\u0438\u0440\u043E\u043A\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u0432 \u043D\u043E\u0432\u044B\u0445 API.

    \u041C\u044B \u0441\u043E\u0432\u043C\u0435\u0449\u0430\u0435\u043C API \u0413\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 \u0441\u043E \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u043C API — Google Maps API, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C\u043E\u0435\u00A0 getCurrentPosition() , \u043D\u0430 Google Map. \u0427\u0442\u043E\u0431\u044B Google Maps API \u0441\u0442\u0430\u043B \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043D\u0430 \u043D\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435, \u043C\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u043C \u0435\u0433\u043E \u0432 HTML \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442:

    \u0427\u0442\u043E\u0431\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 API, \u0432\u043E-\u043F\u0435\u0440\u0432\u044B\u0445 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 LatLng \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 google.maps.LatLng() , \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0449\u0438\u043C \u0434\u0430\u043D\u043D\u044B\u0435 \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 <> \u0438 <> :

    \u042D\u0442\u043E\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 \u0441\u0430\u043C \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 center \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A (options), \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u044B \u043D\u0430\u0437\u0432\u0430\u043B\u0438 myOptions . \u0417\u0430\u0442\u0435\u043C \u043C\u044B \u0441\u043E\u0437\u0434\u0430\u0451\u043C \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430, \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0449\u0435\u0433\u043E \u043D\u0430\u0448\u0443 \u043A\u0430\u0440\u0442\u0443, \u0432\u044B\u0437\u044B\u0432\u0430\u044F \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 google.maps.Map() \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044F \u0435\u043C\u0443 \u0434\u0432\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430 \u2014 \u0441\u0441\u044B\u043B\u043A\u0443 \u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 <>, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u043C\u044B \u0445\u043E\u0442\u0438\u043C \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u044B\u0432\u0430\u0442\u044C \u043A\u0430\u0440\u0442\u0443 (\u0441 ID map_canvas ), \u0438 \u043E\u0431\u044A\u0435\u043A\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A (options), \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u044B \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u043B\u0438 \u0432\u044B\u0448\u0435.

    \u041A\u043E\u0433\u0434\u0430 \u044D\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u043D\u043E, \u043D\u0430\u0448\u0430 \u043A\u0430\u0440\u0442\u0430 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u044B\u0432\u0430\u0435\u0442\u0441\u044F.

    \u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0431\u043B\u043E\u043A \u043A\u043E\u0434\u0430 \u0434\u0435\u043C\u043E\u043D\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0432\u0430 \u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u043F\u043E\u0434\u0445\u043E\u0434\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u043E \u043C\u043D\u043E\u0433\u0438\u0445 API:

    \\n\\n

      \\n
    • \u0412\u043E-\u043F\u0435\u0440\u0432\u044B\u0445, \u043E\u0431\u044A\u0435\u043A\u0442\u044B API \u043E\u0431\u044B\u0447\u043D\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0445 \u043F\u0440\u0438 \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u0438\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B. \\n
    • \u0412\u043E-\u0432\u0442\u043E\u0440\u044B\u0445, \u043E\u0431\u044A\u0435\u043A\u0442\u044B API \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044E \u0438\u043C\u0435\u044E\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 (options), \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0438\u043C\u0435\u043D\u043D\u043E \u0442\u0443 \u0441\u0440\u0435\u0434\u0443 \u0434\u043B\u044F \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435. API \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u044B \u043E\u0431\u044B\u0447\u043D\u043E \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442 \u043E\u0431\u044A\u0435\u043A\u0442\u044B \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 (options) \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432, \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0438 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430. \\n

    \\n\\n

    Note: \u041D\u0435 \u043E\u0442\u0447\u0430\u0438\u0432\u0430\u0439\u0442\u0435\u0441\u044C, \u0435\u0441\u043B\u0438 \u0432\u044B \u0447\u0442\u043E-\u0442\u043E \u043D\u0435 \u043F\u043E\u043D\u044F\u043B\u0438 \u0438\u0437 \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0438\u043C\u0435\u0440\u0430 \u0441\u0440\u0430\u0437\u0443. \u041C\u044B \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0445 API \u0431\u043E\u043B\u0435\u0435 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044C\u044F\u0445.

    \u0423 \u043D\u0438\u0445 \u0443\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u0442\u043E\u0447\u043A\u0438 \u0432\u0445\u043E\u0434\u0430

    \u041F\u0440\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0438 API \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044C, \u0447\u0442\u043E \u0432\u044B \u0437\u043D\u0430\u0435\u0442\u0435 \u0433\u0434\u0435 \u0442\u043E\u0447\u043A\u0430 \u0432\u0445\u043E\u0434\u0430 \u0434\u043B\u044F API. \u0412 API \u0413\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438 \u044D\u0442\u043E \u0434\u043E\u0432\u043E\u043B\u044C\u043D\u043E \u043F\u0440\u043E\u0441\u0442\u043E \u2014 \u044D\u0442\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E <>, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0449\u0435\u0435 \u043E\u0431\u044A\u0435\u043A\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 <>, \u0432\u043D\u0443\u0442\u0440\u0438 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0432\u0441\u0435 \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u043C\u0435\u0442\u043E\u0434\u044B \u0433\u0435\u043E\u043B\u043E\u043A\u0430\u0446\u0438\u0438.

    \u041D\u0430\u0439\u0442\u0438 \u0442\u043E\u0447\u043A\u0443 \u0432\u0445\u043E\u0434\u0430 Document Object Model (DOM) API \u0435\u0449\u0451 \u043F\u0440\u043E\u0449\u0435 \u2014 \u043F\u0440\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0438 \u044D\u0442\u043E\u0433\u043E API \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442 <>, \u0438\u043B\u0438 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 HTML, \u0441 \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u043A\u0430\u043A\u0438\u043C-\u043B\u0438\u0431\u043E \u043E\u0431\u0440\u0430\u0437\u043E\u043C \u0432\u0437\u0430\u0438\u043C\u043E\u0434\u0435\u0439\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C, \u043A \u043F\u0440\u0438\u043C\u0435\u0440\u0443:

    \u0422\u043E\u0447\u043A\u0438 \u0432\u0445\u043E\u0434\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 API \u043D\u0435\u043C\u043D\u043E\u0433\u043E \u0441\u043B\u043E\u0436\u043D\u0435\u0435, \u0447\u0430\u0441\u0442\u043E \u043F\u043E\u0434\u0440\u0430\u0437\u0443\u043C\u0435\u0432\u0430\u0435\u0442\u0441\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u043E\u0441\u043E\u0431\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430, \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0431\u0443\u0434\u0435\u0442 \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u043A\u043E\u0434 API. \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043E\u0431\u044A\u0435\u043A\u0442 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 Canvas API \u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435\u043C \u0441\u0441\u044B\u043B\u043A\u0438 \u043D\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 <>, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0440\u0438\u0441\u043E\u0432\u0430\u0442\u044C, \u0430 \u0437\u0430\u0442\u0435\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0432\u044B\u0437\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 <>:

    \u0412\u0441\u0451, \u0447\u0442\u043E \u043C\u044B \u0445\u043E\u0442\u0438\u043C \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0441 canvas \u043F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0433\u043E, \u0434\u043E\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044F \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u0441\u0432\u043E\u0439\u0441\u0442\u0432 \u0438 \u043C\u0435\u0442\u043E\u0434\u043E\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0433\u043E (content) (\u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C <>), \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:

    Note: \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u0434 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0432 \u043D\u0430\u0448\u0435\u043C bouncing balls demo (see it running live also).

    \u041E\u043D\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\u043C

    \u041C\u044B \u0443\u0436\u0435 \u043E\u0431\u0441\u0443\u0436\u0434\u0430\u043B\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0440\u0430\u043D\u0435\u0435 \u0432 \u044D\u0442\u043E\u043C \u043A\u0443\u0440\u0441\u0435, \u0432 \u043D\u0430\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044C\u0435 Introduction to events \u2014 \u0432 \u044D\u0442\u043E\u0439 \u0441\u0442\u0430\u0442\u044C\u0435 \u0434\u0435\u0442\u0430\u043B\u044C\u043D\u043E \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043D\u0430 \u0441\u0442\u043E\u0440\u043E\u043D\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u0438 \u0438\u0445 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0435. \u0415\u0441\u043B\u0438 \u0432\u044B \u0435\u0449\u0451 \u043D\u0435 \u0437\u043D\u0430\u043A\u043E\u043C\u044B \u0441 \u0442\u0435\u043C, \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E\u0439 \u0447\u0430\u0441\u0442\u0438, \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u044D\u0442\u0443 \u0441\u0442\u0430\u0442\u044C\u044E \u043F\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043C \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C.

    \u0412 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 API \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044F \u0440\u044F\u0434 \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439, \u0432 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 — \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u043D\u0435\u0442. \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0430, \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0442\u044C \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \u043F\u0440\u0438 \u0441\u043E\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438 \u043A\u0430\u043A\u043E\u0433\u043E-\u043B\u0438\u0431\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043F\u043E \u0431\u043E\u043B\u044C\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u044B \u0432 \u043D\u0430\u0448\u0435\u043C \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430 \\\»\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 (Event handlers)\\\». \u041A\u0430\u043A \u043F\u0440\u043E\u0441\u0442\u043E\u0439 \u043F\u0440\u0438\u043C\u0435\u0440, \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 XMLHttpRequest (\u043A\u0430\u0436\u0434\u044B\u0439 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u0441\u043E\u0431\u043E\u0439 HTTP-\u0437\u0430\u043F\u0440\u043E\u0441 \u043A \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043D\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u043A\u0430\u043A\u0438\u0445-\u043B\u0438\u0431\u043E \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432 (resource)) \u0438\u043C\u0435\u044E\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0441\u043E\u0431\u044B\u0442\u0438\u0435 load \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442, \u043A\u043E\u0433\u0434\u0430 \u043E\u0442\u0432\u0435\u0442 \u0441 \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043C\u044B\u043C \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u043C \u0431\u044B\u043B \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D \u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0432 \u0434\u0430\u043D\u043D\u044B\u0439 \u043C\u043E\u043C\u0435\u043D\u0442.

    \u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043A\u043E\u0434 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043F\u0440\u043E\u0441\u0442\u043E\u0439 \u043F\u0440\u0438\u043C\u0435\u0440 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u0439:

    Note: \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u044D\u0442\u043E\u0442 \u043A\u043E\u0434 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0432 \u043F\u0440\u0438\u043C\u0435\u0440\u0435 ajax.html (see it live also).

    \u0412 \u043F\u0435\u0440\u0432\u044B\u0445 \u043F\u044F\u0442\u0438 \u0441\u0442\u0440\u043E\u043A\u0430\u0445 \u043C\u044B \u0437\u0430\u0434\u0430\u0451\u043C \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0445\u043E\u0442\u0438\u043C \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C, \u0441\u043E\u0437\u0434\u0430\u0451\u043C \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 XMLHttpRequest() , \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u043C HTTP-\u0437\u0430\u043F\u0440\u043E\u0441 GET , \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043C\u044B\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C, \u0447\u0442\u043E \u043C\u044B \u0445\u043E\u0442\u0438\u043C \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 json, \u043F\u043E\u0441\u043B\u0435 \u0447\u0435\u0433\u043E \u043E\u0442\u0441\u044B\u043B\u0430\u0435\u043C \u0437\u0430\u043F\u0440\u043E\u0441.

    \u0417\u0430\u0442\u0435\u043C \u0444\u0443\u043D\u043A\u0446\u0438\u044F-\u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A onload \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043D\u0430\u0448\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043F\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u043E\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041D\u0430\u043C \u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E, \u0447\u0442\u043E \u043E\u0442\u0432\u0435\u0442 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D \u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u0441\u043B\u0435 \u043D\u0430\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u044F load (\u0438 \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0451\u0442 \u043E\u0448\u0438\u0431\u043A\u0430), \u0442\u0430\u043A \u0447\u0442\u043E \u043C\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u043C \u043E\u0442\u0432\u0435\u0442, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D\u043D\u044B\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u043C \u043E\u0431\u044A\u0435\u043A\u0442 JSON \u0432 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 superHeroes , \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u0437\u0430\u0442\u0435\u043C \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u043C \u0434\u0432\u0443\u043C \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u043C \u0444\u0443\u043D\u043A\u0446\u0438\u044F\u043C \u0434\u043B\u044F \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.

    \u0423 \u043D\u0438\u0445 \u0435\u0441\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 \u0442\u0430\u043C, \u0433\u0434\u0435 \u044D\u0442\u043E \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E

    \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B WebAPI \u043F\u043E\u0434\u0432\u0435\u0440\u0436\u0435\u043D \u0442\u0435\u043C \u0436\u0435 \u0441\u043E\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\u043C \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 , \u0447\u0442\u043E \u0438 JavaScript \u0438\u043B\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0431-\u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, same-origin policy), \u043D\u043E \u0438\u043D\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u0445\u0430\u043D\u0438\u0437\u043C\u044B \u0437\u0430\u0449\u0438\u0442\u044B. \u041A \u043F\u0440\u0438\u043C\u0435\u0440\u0443, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0437 \u043D\u0430\u0438\u0431\u043E\u043B\u0435\u0435 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 WebAPI \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430\u043C\u0438, \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u043C\u0438 \u0447\u0435\u0440\u0435\u0437 HTTPS \u0432 \u0441\u0432\u044F\u0437\u0438 \u0441 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 (\u043F\u0440\u0438\u043C\u0435\u0440\u044B: Service Workers \u0438 Push).

    \u041A \u0442\u043E\u043C\u0443 \u0436\u0435, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 WebAPI \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u044E\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043E\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F, \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043A \u043D\u0438\u043C \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u0432\u044B\u0437\u043E\u0432 \u0432 \u043A\u043E\u0434\u0435. \u0412 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043F\u0440\u0438\u043C\u0435\u0440\u0430, \u0432\u044B, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043B\u0438 \u0442\u0430\u043A\u043E\u0435 \u0434\u0438\u0430\u043B\u043E\u0433\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E \u043F\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435 \u043D\u0430\u0448\u0435\u0433\u043E \u043F\u0440\u0438\u043C\u0435\u0440\u0430 Geolocation \u0440\u0430\u043D\u0435\u0435:

    Notifications API \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u043E\u0434\u043E\u0431\u043D\u044B\u043C \u043E\u0431\u0440\u0430\u0437\u043E\u043C:

    \u0417\u0430\u043F\u0440\u043E\u0441\u044B \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0439 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B \u0434\u043B\u044F \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u0438\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u2014 \u043D\u0435 \u0431\u0443\u0434\u044C \u0438\u0445, \u0441\u0430\u0439\u0442\u044B \u043C\u043E\u0433\u043B\u0438 \u0431\u044B \u0441\u043A\u0440\u044B\u0442\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0434\u0438\u0442\u044C \u0432\u0430\u0448\u0435 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u044F \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E \u043D\u0430\u0434\u043E\u0435\u0434\u043B\u0438\u0432\u044B\u0445 \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439.

    \u0418\u0442\u043E\u0433\u0438

    \u041D\u0430 \u0434\u0430\u043D\u043D\u043E\u043C \u044D\u0442\u0430\u043F\u0435, \u0443 \u0432\u0430\u0441 \u0434\u043E\u043B\u0436\u043D\u043E \u0441\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043E \u0442\u043E\u043C, \u0447\u0442\u043E \u0442\u0430\u043A\u043E\u0435 API, \u043A\u0430\u043A \u043E\u043D\u0438 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0438 \u043A\u0430\u043A \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0445 \u0432 \u0441\u0432\u043E\u0451\u043C JavaScript \u043A\u043E\u0434\u0435. \u0412\u0430\u043C \u043D\u0430\u0432\u0435\u0440\u043D\u044F\u043A\u0430 \u043D\u0435 \u0442\u0435\u0440\u043F\u0438\u0442\u0441\u044F \u043D\u0430\u0447\u0430\u0442\u044C \u0434\u0435\u043B\u0430\u0442\u044C \u043F\u043E-\u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u043C\u0443 \u0438\u043D\u0442\u0435\u0440\u0435\u0441\u043D\u044B\u0435 \u0432\u0435\u0449\u0438 \u0441 \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u043C\u0438 API, \u0442\u0430\u043A \u0432\u043F\u0435\u0440\u0451\u0434! \u0412 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0440\u0430\u0437 \u043C\u044B \u0440\u0430\u0441\u0441\u043C\u043E\u0442\u0440\u0438\u043C \u0440\u0430\u0431\u043E\u0442\u0443 \u0441 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E Document Object Model (DOM).

    Что такое API? Простое объяснение для начинающих

    Этот краткий термин на слуху у всех, кто хоть как-то сталкивался с разработкой. Но далеко не все понимают, что именно он обозначает и зачем нужен. Разработчик Пётр Газаров рассказал об API простыми словами в своём блоге.

    Аббревиатура API расшифровывается как «Application Programming Interface» (интерфейс программирования приложений, программный интерфейс приложения). Большинство крупных компаний на определённом этапе разрабатывают API для клиентов или для внутреннего использования. Чтобы понять, как и каким образом API применяется в разработке и бизнесе, сначала нужно разобраться, как устроена «всемирная паутина».

    Всемирная паутина и удалённые серверы

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

    При введении в адресную строку браузера www.facebook.com на удалённый сервер Facebook отправляется соответствующий запрос. Как только браузер получает ответ, то интерпретирует код и отображает страницу.

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

    API как способ обслуживания клиентов

    Многие компании предлагают API как готовый продукт. Например, Weather Underground продаёт доступ к своему API для получения метеорологических данных.

    Сценарий использования: на сайте небольшой компании есть форма для записи клиентов на приём. Компания хочет встроить в него Google Календарь, чтобы дать клиентам возможность автоматически создавать событие и вносить детали о предстоящей встрече.

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

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

    Чем API Google Календаря отличается от API любого другого удалённого сервера в сети?

    Технически, разница в формате запроса и ответа. Чтобы сгенерировать полную веб-страницу, браузер ожидает ответ на языке разметки HTML, в то время как API Google Календаря вернёт просто данные в формате вроде JSON.

    Если запрос к API делает сервер веб-сайта компании, то он и является клиентом (так же, как клиентом выступает браузер, когда пользователь открывает веб-сайт).

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

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

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

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

    Такие запросы часто можно отправлять через браузер. Так как передача данных по протоколу HTTP происходит в текстовом виде, браузер всегда сможет отобразить ответ. Например, через браузер можно напрямую обратиться к API GitHub (https://api.github.com/users/petrgazarov), причём без маркера доступа, и получить вот такой ответ в формате JSON:

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

    Ещё несколько примеров API

    Слово «application» (прикладной, приложение) может применяться в разных значениях. В контексте API оно подразумевает:

    • фрагмент программного обеспечения с определённой функцией,
    • сервер целиком, приложение целиком или же просто отдельную часть приложения.

    Любой фрагмент ПО, который можно чётко выделить из окружения, может заменять букву «А» в англоязычной аббревиатуре, и тоже может иметь некоторого рода API. Например, при внедрении в код разработчиком сторонней библиотеки, она становится частью всего приложения. Будучи самостоятельным фрагментом ПО, библиотека будет иметь некий API, который позволит ей взаимодействовать с остальным кодом приложения.

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

    hw_api_object

    (PHP 4, PHP 5 hw_api_object — Creates a new instance of class hw_api_object

    Описание

    Creates a new instance of the >hw_api_object.

    Список параметров

    Возвращаемые значения

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

    НОВОСТИ ФОРУМА
    Рыцари теории эфира
    01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
    [center][Youtube]69vJGqDENq4[/Youtube][/center]
    [center]14:36[/center]
    Osievskii Global News
    29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
    30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
    [center][Ok]376309070[/Ok][/center]
    [center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
    30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
    [center][Youtube]VVQv1EzDTtY[/Youtube][/center]
    [center]10:43[/center]

    интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
    мой телеграмм https://t.me/peshekhonovandrei
    мой твиттер https://twitter.com/Andrey54708595
    мой инстаграм https://www.instagram.com/andreipeshekhonow/

    [b]Мой комментарий:
    Андрей спрашивает: Краснодарская синагога — это что, военный объект?
    — Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

    [center][Youtube]CLegyQkMkyw[/Youtube][/center]
    [center]10:22 [/center]

    Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
    https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

    Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
    http://av-inf.blogspot.com/2013/12/dalles.html

    [center][b]Сон разума народа России [/center]

    [center][Youtube]CLegyQkMkyw[/Youtube][/center]
    [center]10:22 [/center]

    Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
    https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

    Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
    http://av-inf.blogspot.com/2013/12/dalles.html

    [center][b]Сон разума народа России [/center]

    Что такое код hw_api_object

    (no version information, might be only in CVS)

    hw_api->object — Retrieve attribute information

    Description object hw_api->object ( array parameter)

    This function retrieves the attribute information of an object of any version. It will not return the document content. The parameter array contains the required elements ‘objectIdentifier’ and the optional elements ‘attributeSelector’ and ‘version’.

    The returned object is an instance of >HW_API_Object on success or HW_API_Error if an error occurred.

    This simple example retrieves an object and checks for errors.

    Example 1. Retrieve an object

    function handle_error ( $error ) <
    $reason = $error -> reason ( 0 );
    echo «Type: » ;
    switch ( $reason -> type ()) <
    case 0 :
    echo «Error» ;
    break;
    case 1 :
    echo «Warning» ;
    break;
    case 2 :
    echo «Message» ;
    break;
    >
    echo «

    \n» ;
    echo «Description: » . $reason -> description ( «en» ) . «
    \n» ;
    >

    Илон Маск рекомендует:  Переключатели
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL