Перейти к основному содержимому

Справочник API

Развертывайте и выполняйте свои функции через стандартизированный интерфейс RESTful.

Конечная точка выполнения

POST https://api.matesst.com/api/v2/:functionName

Замените :functionName на имя функции, которую вы хотите выполнить.

Заголовки (Headers)

ЗаголовокЗначениеОписание
AuthorizationBearer ${API_SECRET}Секретный ключ вашего приложения
Content-Typeapplication/jsonТребуется для тела JSON

Тело запроса (Request Body)

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

ПолеТипОбязательноОписание
paramsArrayДаСписок входных аргументов для функции.
nargoutNumberДаКоличество ожидаемых возвращаемых значений функции.
instanceIdStringНетID машины алгоритма для использования.

Понимание instanceId

  • Балансировка нагрузки: Если instanceId опущен, Matesst будет использовать машину из общего пула (ID, начинающиеся с instance-), используя сложный алгоритм балансировки нагрузки.
  • Выделенный экземпляр (Dedicated Instance): Вы можете указать произвольную строку в качестве instanceId. Если этот ID не существует, Matesst автоматически запустит временную выделенную машину, которая работает независимо от общего пула балансировки нагрузки. Это гарантирует, что ваши процессы защищены от вытеснения или конкуренции за ресурсы со стороны других запросов, особенно в сценариях с высокой нагрузкой.
  • Оптимизация производительности: Повторное использование одного и того face instanceId для последующих запросов позволяет избежать времени холодного старта, так как машина остается «горячей» для этого конкретного ID.

Пример запроса

{
"params": [1, 2],
"nargout": 1,
"instanceId": "instance-0"
}

Структура ответа

Matesst возвращает JSON-объект, содержащий результаты выполнения.

ПолеТипОписание
resultsanyВозвращаемые значения вашей функции.
statusStringСтатус запроса (например, "success", "error").

Правила упаковки результатов

  • Число при nargout = 1: Если функция возвращает одно число и nargout равно 1, оно возвращается непосредственно в поле results.
  • В остальных случаях: Результаты всегда упаковываются во вложенную структуру массива. Длина внешнего массива соответствует nargout.
    • Пример: Если nargout = 1 и функция возвращает массив [1, 2, 3], поле results будет иметь вид [[1, 2, 3]].

Пример: Одиночное число

{
"results": 7,
"status": "success"
}

Пример: Сложные данные (функция unique)

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

Запрос:

{
"params": [[9, 2, 2, 9, 5]],
"nargout": 3
}

Ответ:

{
"results": [
[[2, 5, 9]], // Результат 1: Уникальные значения (Вектор-строка)
[[2], [5], [1]], // Результат 2: Индексы ia (Вектор-столбец)
[[3], [1], [1], [3], [2]] // Результат 3: Обратные индексы ic (Вектор-столбец)
],
"status": "success"
}

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

Если выполнение завершается неудачей, Matesst возвращает код состояния, отличный от 200, с телом JSON, описывающим ошибку.

ПолеТипОписание
errorStringКраткое описание типа ошибки.
messageStringПодробная информация об ошибке, часто включающая трассировку стека (stack trace).

Пример ответа с ошибкой

{
"error": "Execution Error",
"message": "Too many input arguments.\n"
}