Как устроен сеанс API
Как выглядит разговор с процессором, что сохранять на каждом шаге и что делать с отказом.
Транспорт
Заголовок раздела «Транспорт»Процессор compute_contract_cli запускается с ключом --session. Первой строкой он сообщает о готовности: одна строка JSON в стандартный вывод. Дальше разговор идёт по строкам — вы пишете одну строку JSON с запросом ему на вход, он отвечает одной строкой JSON на выходе.
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 |
Ключ листа: именно его ждут операции правки, а не видимое имя |
apply_cell_edits |
payload.workbookHistory.revision |
Новая принятая ревизия |
| каждый ответ | ok / code / payload | У каждого отказа есть свой код; показывать успех при ok: false нельзя |
save_workbook_subset |
destinationUri |
Полный адрес сохранённого файла, начиная с file:// |
Что делать с отказом
Заголовок раздела «Что делать с отказом»if (!response.ok) { throw new Error(response.code + ": " + JSON.stringify(response));}