Справочник API
Развертывайте и выполняйте свои функции через стандартизированный интерфейс RESTful.
Конечная точка выполнения
POST https://api.matesst.com/api/v2/:functionNameЗамените :functionName на имя функции, которую вы хотите выполнить.
Заголовки (Headers)
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer ${API_SECRET} | Секретный ключ вашего приложения |
Content-Type | application/json | Требуется для тела JSON |
Тело запроса (Request Body)
Тело запроса должно представлять собой JSON-объект со следующими полями:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
params | Array | Да | Список входных аргументов для функции. |
nargout | Number | Да | Количество ожидаемых возвращаемых значений функции. |
instanceId | String | Нет | ID машины алгоритма для использования. |
Понимание instanceId
- Балансировка нагрузки: Если
instanceIdопущен, Matesst будет использовать машину из общего пула (ID, начинающиеся сinstance-), используя сложный алгоритм балансировки нагрузки. - Выделенный экземпляр (Dedicated Instance): Вы можете указать произвольную строку в качестве
instanceId. Если этот ID не существует, Matesst автоматически запустит временную выделенную машину, которая работает независимо от общего пула балансировки нагрузки. Это гарантирует, что ваши процессы защищены от вытеснения или конкуренции за ресурсы со стороны других запросов, особенно в сценариях с высокой нагрузкой. - Оптимизация производительности: Повторное использование одного и того face
instanceIdдля последующих запросов позволяет избежать времени холодного старта, так как машина остается «горячей» для этого конкретного ID.
Пример запроса
{
"params": [1, 2],
"nargout": 1,
"instanceId": "instance-0"
}
Структура ответа
Matesst возвращает JSON-объект, содержащий результаты выполнения.
| Поле | Тип | Описание |
|---|---|---|
results | any | Возвращаемые значения вашей функции. |
status | String | Статус запроса (например, "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, описывающим ошибку.
| Поле | Тип | Описание |
|---|---|---|
error | String | Краткое описание типа ошибки. |
message | String | Подробная информация об ошибке, часто включающая трассировку стека (stack trace). |
Пример ответа с ошибкой
{
"error": "Execution Error",
"message": "Too many input arguments.\n"
}