⟵ сюдатуда ⟶
  • Учебный курс
  • Создание простых таблиц и полей
  • Коды базовый уровень
  • Селекты и связь между таблицами
  • Настройки таблиц базовый уровень
  • Префильтры базовый уровень
  • Условное форматирование базовый уровень
  • Коды действия базовый уровень
  • Использование всплывающих окон
  • Циклы базовый уровень
  • Роли и пользователи в web
  • Коды продвинутый уровень
  • Коды действий продвинутый уровень
  • Префильтры продвинутый уровень
  • Настройки полей и таблиц продвинутый уровень
  • Циклы продвинутый уровень
  • Форматирование продвинутый уровень
  • Селект-дерево
  • Выполнения кода действия по расписанию
  • Печать и отправка email
  • Нотификации
  • Взаимодействие по API
  • Вызов стороннего скрипта из кода по кнопке
  • Вызов стороннего сервера из кода
  • Прием внешних запросов к тотум
  • Авторизация в remotes
  • Адаптивность и секции
  • Графики
  • Вид таблицы панелями и поворот строчной части
  • Анонимные таблицы для неавторизованного доступа
  • Внешние формы для сбора информации
  • Обновление и бэкапирование
  • Дублирование схем и перенос таблиц между базами
  • Консольная утилита bin/totum
  • Прием внешних запросов к тотум

    Как отправить запрос к Тотум по пути?

    Например у вас есть сторонний сервер, которому нужно передать параметры и получить ответ от Тотума.

    Лучшим решением для этого являются remotes — втроенные api-микросервисы на Totum.

    Самый простой вариант — создаем строку в таблице Системные таблицы —> Основные —> API —> Remotes.

    1. Задаем name + remotes_user + code:

      =: selectRowList(table: 'users'; field: 'login'; field: 'fio')
      
      
    2. В return ставим вариант json и включаем on_off.

    3. Теперь если мы в браузере откроем https://HOST.TOTUM/Remotes/NAME_ACTION — то увидим список всех пользователей системы в json-формате.

    Можно ли написать обработчик и сборщик информации на тотум-коде?

    Да, код в code в remotes пишется именно на totum-code.

    Каким образом можно передать данные в таком запросе и как их получить в тотум-коде?

    В запросе к Тотуму могут быть переданы GET или POST параметры.

    Внутри кода в code параметры запроса могут быть получены через переменные:

    • $#getrow из переменных, переданных в GET.

    • $#postrow из переменных, переданных в POST при использовании application/x-www-form-urlencoded или multipart/form-data в заголовке Content-Type запроса HTTP.

    • $#input — строка или null — необработанные данные из тела запроса при передаче POST в raw-data.

    • $#headers — row из заголовков HTTP-запроса.

    Обратите внимание, что если параметры передаются размеченными в GET или POST (не в raw-data), то они придут в код Тотума уже в формате Тотума.

    Те если у вас запрос к ремоуту содержит POST с параметрами key = zzGhdy и name = Alexey, то что бы найти такую запись в таблице table по key:


    =:
    select(table: 'table'; field: 'summ'; where: 'key' = $#post[key])

    Если же запрос пришел в raw-data и вы получили его при помощи $#input то это будет просто строка, которую вам нужно будет разобрать на части.

    Какие есть варианты кодирования ответа?

    • success/error — возвращается success либо error если в процессе выполнения были ошибки. Текст ошибки не выводится.

    • json — ответ скрипта переводится в JSON. Если возникла ошибка, возвращается {"error":"Текст ошибки"}.

    • строка — ответ скрипта возвращается в тело ответа без обработки.

    • headers + body — в ответе скрипта ожидается row с ключами headers — отправляются в качестве HTTP-заголовков ответа и body — выводится в тело ответа.

    Можно ли протестировать remote не отправляя запрос?

    Да, в таблице remotes есть 4 поля: get, post, input, data и кнопка check_remote.

    get, post, input и data — соответсвуют переменным. Про data расскажем чуть позже.

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

    Можно ли выполнить действие в тотум при получении такого запроса?

    Конечно. Code — это код-действия. Например если мы хотим создать строку и записать в поле data пришедший POST:


    =:
    insert(table: 'table'; field: 'data' = $#post)

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

    От пользователя указанного в remotes_user.