Small SAP Talk. Удобный способ мониторинга различных API на iOS
Small SAP Talk. Мониторинг различных API на iOS
Недавно я совершенно случайно узнал о таком инструменте, как Scriptable. Это приложение позволяет создавать на iPhone так называемые виджеты, которые можно использовать для мониторинга работоспобности различных приложений и API без долгого и трудоёмкого процесса разработки нативного мобильного приложения.
Что такое Scriptable?
Scriptable — это приложение для iOS, которое позволяет писать и выполнять JS код прямо на устройстве и интегрировать его с нативными возможностями iOS.
С его помощью можно:
- Создавать собственные виджеты для домашнего экрана
- Выполнять REST API-запросы
- Отображать динамические данные
- Автоматизировать небольшие повседневные задачи
См. https://scriptable.app/
Почему это может быть полезно?
Среди множества облачных сервисов, API и распределённых систем разработчикам часто приходится переключаться между консолями, дэшбордами и прочими инструментами мониторинга. Иногда хочется просто быстро взглянуть на экран телефона и получить ответ на вопрос:
И желательно без лишних телодвижений (логинов, токенов и прочего).
Сценарий
Представим, что у нас есть приложение, развернутое в среде Cloud Foundry в нашем аккаунте SAP BTP.
См. Deploying JAVA Spring Boot Application to the SAP BTP Cloud Foundry Instance
Для демонстрации в этой заметке я буду использовать приложение из серии Hello World со следующим исходным кодом:
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
app.get("/", (req, res) => {
console.log(`Request received at ${new Date().toISOString()}`);
res.send("Demo-1 app is running");
});
app.get("/status", (req, res) => {
res.json({
status: "UP",
ts: new Date().toISOString(),
});
});
app.listen(port, () => {
console.log(`App started on port ${port}`);
});
Результат работы данного приложения представлен на видеофрагменте ниже.
Постановка проблемы
Даже для небольшого сервиса или приложения время от времени вы можете задаваться вопросами:
- Работает ли приложение?
- Доступен ли endpoint?
- Не сломалось ли что-нибудь?
Если мы говорим про платформу BTP, можно открыть BTP Cockpit, или использовать CLI, но это далеко не самый быстрый способ, когда вы не за ноутбуком. Вместо разработки нативного iOS-приложения для мониторинга можно использовать возможности Scriptable и создать виджет, который:
• Вызывает endpoint /status приложения
• Анализирует ответ
• Отображает текущий статус
Ну а благодаря современным AI-инструментам, создание такого скрипта становится почти тривиальной задачей. Достаточно описать, что именно вам нужно, и…
Спустя мгновение вы получаете готовый код.
const APP_URL = "https://YOUR-URL-TO-THE-APP/"
const TIMEOUT_MS = 4000;
async function fetchStatus() {
const req = new Request(APP_URL);
req.timeoutInterval = TIMEOUT_MS;
req.method = "GET";
req.headers = { "Accept": "application/json" };
try {
const res = await req.loadJSON();
return { ok: true, data: res };
} catch (e) {
return { ok: false, err: String(e) };
}
}
function buildWidget(title, statusLine, detailLine, ok) {
const w = new ListWidget();
w.setPadding(14, 14, 14, 14);
const t = w.addText(title);
t.font = Font.semiboldSystemFont(14);
w.addSpacer(10);
const s = w.addText(statusLine);
s.font = Font.boldSystemFont(24);
w.addSpacer(6);
const d = w.addText(detailLine);
d.font = Font.systemFont(12);
d.textOpacity = 0.8;
w.backgroundColor = ok ? new Color("1c3d1c") : new Color("3d1c1c");
return w;
}
const check = await fetchStatus();
const now = new Date();
const timeStr = now.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
let widget;
if (check.ok) {
const status = (check.data.status || "UP").toString();
widget = buildWidget(
"DemoApp-1 Status",
status,
`Last check: ${timeStr}`,
true
);
} else {
widget = buildWidget(
"DemoApp-1 Status",
"DOWN",
`Last check: ${timeStr}`,
false
);
}
if (config.runsInWidget) {
Script.setWidget(widget);
} else {
await widget.presentSmall();
}
Script.complete();
Финальные шаги
Добавьте виджет на экран устройства и используйте его для быстрого мониторинга состояния вашего сервиса.


Отметьте, насколько вы бесподобны и восхитительны сегодня!
P.S.
Олег, спасибо вам за идею для заметки! Вы неотразимы!
Все, что нужно знать про рубрику Small SAP Talk представлено в следующей заметке:
См. Small SAP Talk