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

    Чем отличается getFromScript от linkToScript?

    Есть две функции, которые из Totum могут вызвать сторонний сервер. На самом деле их больше, но нас интересуют эти две:

    Как выполнить POST или GET запрос при помощи getFromScript?

    Например, нам нужно вызвать сторонний сервер, передать ему параметры запроса и сделать что-то с полученным ответом. Например запишем ответ в поле h_data:

    Передаем POST-параметры (они не видны в адресной строке):

    =: set(table: $#ntn; field: 'h_data' = $script)
    
    // Вариант, когда мы post-параметры вносим вручную
    
    script: getFromScript(uri: "https://example.host/api/uri/"; post: "action" = "select"; post: "key" = "oIpOyDHca3tSQZIz3ZjY"; post: "params" = $params; timeout: 30)
        params: jsonCreate(data: $paramsJsonData)
            paramsJsonData: rowCreate(field: "user" = #user; field: "type" = "new")
    
    
    =: set(table: $#ntn; field: 'h_data' = $script)
    
    // Вариант, когда мы post-параметры передаем как row
    
    script: getFromScript(uri: "https://example.host/api/uri/"; posts: $data; timeout: 30)
    
    data: rowCreate(field: "action" = "select"; field: "key" = "oIpOyDHca3tSQZIz3ZjYRZGqQd0yvqXYwQ"; field: "params" = $params)
        params: jsonCreate(data: $paramsJsonData)
            paramsJsonData: rowCreate(field: "user" = #user; field: "type" = "new")
    
    

    Передаем GET-параметры (они видны в адресной строке):

    =: set(table: $#ntn; field: 'h_data' = $script)
    
    // Вариант, когда мы post-параметры передаем как row
    
    script: getFromScript(uri: "https://example.host/api/uri/"; gets: $data; timeout: 30)
    
    data: rowCreate(field: "action" = "select"; field: "key" = "oIpOyDHca3tSQZIz3ZjYRZGqQd0yvqXYwQ"; field: "params" = $params)
        params: jsonCreate(data: $paramsJsonData)
            paramsJsonData: rowCreate(field: "user" = #user; field: "type" = "new")
    
    

    Зачем нужен параметр timeout?

    Важно: при вполнении такого запроса к стороннему серверу если не задать параметр timeout процесс Тотума будет ждать ответ бесконечно и не отключится по внутреннему таймауту.

    Если timeout задан то по его истечении при отсутвии ответа стороннего сервера произойдет срабатывание exeption, аналогично функции errorExeption.

    Может ли getFromScript быть вызван из кода, а не только из кода-действия?

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