Протокол обмена данными

Материал из ISPWiki

Перейти к: навигация, поиск

Получение данных

Существует два формата для получения данных скриптами-обработчиками:

  • cgi - данные передаются как обычным CGI-скриптам и для их получения можно воспользоваться библиотеками для работы с CGI, которые есть для всех языков программирования. Этот способ достаточно прост, хотя и недостаточно гибок, и подойдет для большинства обработчиков
  • xml - данные передаются в стандартный ввод в виде XML-документа, при этом данные содержат описание интерфейса пользователя, текстовые сообщения, а также введенные пользователем значения (в виде отдельных тегов, имя которых совпадает с именем параметра)

Также часть данных, которые могут понадобиться, содержится в переменных окружения

Вывод данных

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

Все выходные данные можно условно разделить на несколько типов.

  • Сообщение об ошибке, например
<?xml version="1.0" encoding="UTF-8"?>
<doc>
  <error code="1">Oops!</error>
</doc>

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


  • Перенаправление, например
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<redirect>location='ispmgr?func=usrparam'</redirect>
</doc>

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


  • Сообщение об удачном выполнении операции, например
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<ok>top</ok>
</doc>

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

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

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


  • Таблица данных, например
<?xml version="1.0" encoding="UTF-8"?>
<doc>
 <elem>
  <id>10</id>
  <name>Element1</name>
 </elem>
 <elem>
  <id>12</id>
  <name>Element2</name>
 </elem>
</doc>

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


  • Данные для формы, например
<?xml version="1.0" encoding="UTF-8"?>
<doc>
  <id>10</id>
  <name>Element1</name>
</doc>

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

Была ли эта информация полезной? Да | Нет
Личные инструменты