Порядок действий

Поскольку API-расширениям Интеллос нужен публично доступный адрес в качестве API Endpoint, API-расширение необходимо задеплоить на публичный адрес. Здесь для деплоя API-расширения мы используем Cloudflare Workers. Клонируйте пример репозитория на GitHub. В этом репозитории содержится простое API-расширение, которое можно изменить и взять за отправную точку.
Откройте файл wrangler.toml и измените name и compatibility_date на имя вашего приложения и дату совместимости. Здесь нам важна настройка TOKEN в vars. При добавлении API-расширения в Интеллос нужно указать этот токен. По соображениям безопасности рекомендуем использовать в качестве токена случайную строку. Не записывайте токен прямо в исходном коде — передавайте его через переменные среды. Поэтому не коммитьте wrangler.toml в свой репозиторий кода.
Это API-расширение возвращает случайную цитату из сериала «Во все тяжкие». Логику этого API-расширения можно изменить в src/index.ts. В примере показано, как взаимодействовать со сторонними API.
В этом репозитории упрощены все настройки, кроме бизнес-логики. Для деплоя API-расширения можно напрямую использовать команды npm.
После успешного деплоя вы получите публичный адрес, который можно добавить в Интеллос в качестве API Endpoint. Обратите внимание: не пропускайте путь endpoint. Конкретное определение этого пути находится в src/index.ts.
Добавление API Endpoint в Интеллос
Также для локального деплоя и тестирования можно использовать команду npm run dev.
Соответствующий вывод:
После этого для локальной отладки интерфейса можно использовать такие инструменты, как Postman.

О Bearer-аутентификации

Наша логика проверки Bearer находится в коде выше. Для реализации проверки Bearer мы используем пакет hono/bearer-auth. Чтобы получить токен, используйте c.env.TOKEN в src/index.ts.

О валидации параметров

Здесь мы используем zod для определения типов параметров. Чтобы валидировать параметры, используйте zValidator в src/index.ts. Используйте const { point, params } = c.req.valid("json");, чтобы получить провалидированные параметры. У point здесь всего два значения, поэтому для его определения мы используем z.union. Параметр params необязательный, поэтому для его определения мы используем z.optional. Также есть параметр inputs типа Record<string, any>. Этот тип представляет объект со строковыми ключами и любыми значениями. С его помощью можно представить любой объект. Чтобы получить параметр count, используйте params?.inputs?.count в src/index.ts.

Получение логов Cloudflare Workers


Справочные материалы: