Как устроен сеанс API
Транспорт, жизненный цикл сеанса и fail-closed обработка отказов.
Транспорт
Заголовок раздела «Транспорт»CLI запускается с аргументом –session. Он пишет одну JSON-строку готовности в stdout. Затем клиент отправляет по одной JSON-строке в stdin и получает по одной JSON-строке ответа из stdout.
const child = spawn(binary, ["--session"], { stdio: ["pipe", "pipe", "inherit"],});
child.stdin.write(JSON.stringify(request) + "\n");Жизненный цикл
Заголовок раздела «Жизненный цикл»| Шаг | Что сохранять | Почему |
|---|---|---|
| open_workbook_subset | payload.subsetId | Идентифицирует книгу в этом процессе |
| open_workbook_subset | payload.activeSheet.path | Это sheetKey для мутаций |
| apply_cell_edits | payload.workbookHistory.revision | Новая принятая ревизия |
| каждый ответ | ok / code / payload | Ошибки типизированы; нельзя рисовать успех при ok=false |
| save_workbook_subset | destinationUri | Абсолютный file:// URI выходного файла |
Fail-closed обработка
Заголовок раздела «Fail-closed обработка»if (!response.ok) { throw new Error(response.code + ": " + JSON.stringify(response));}