Файл → Создать → Новый тест API открывает HTTP-клиент,
сохраняемый в файл .lnh. Один файл представляет конечную точку
(метод, URL, заголовки и тело) и хранит несколько тестов в списке
слева — у каждого теста свои значения переменных {name},
используемых в URL, заголовках и теле, а также результат последнего запуска
(статус, время, дата, заголовки и тело ответа). Также показывается
эквивалентная команда curl. Та же разовая операция доступна через
CLI (http) и MCP (http_request). Тестер использует curl, который входит в Windows 10 и 11; если его нет, LightNote перед отправкой открывает руководство по установке.
Отправка и ответ
Ctrl+Enter отправляет запрос. Пока ответ не пришёл, та же кнопка
становится кнопкой Остановить (или Esc), а ожидание показывает секунды.
Значок ответа показывает статус и время; рядом — тип, размер и время запуска теста. Строка
curl следует за тем, что вы вводите, уже с переменными выбранного теста: кнопка
рядом копирует команду, а её стрелка предлагает то же самое для PowerShell, Python,
JavaScript, C# и HTTPie. Если вставить команду curl прямо в URL, будут
импортированы метод, заголовки и тело, а тесты останутся.
Переменная без значения в тесте отправляется буквально ({id} в URL,
и сервер отвечает ошибкой, которая не объясняет причину) — вкладка Переменные
выделяет её и называет. Точка рядом с каждым тестом в списке окрашена в цвет последнего
статуса, а пустое кольцо — тест, который ещё не запускался. В ответе панель над телом
форматирует JSON/XML только на экране, переносит строки, копирует тело и сохраняет его в
файл в том виде, в каком оно пришло.
Составить запрос. Вкладка Параметры показывает query-часть URL списком: правка строки меняет URL, а правка URL меняет список. Вкладка Аутентификация сама собирает заголовок — Basic, Bearer или Ключ API, в заголовке или в URL, — и каждое поле принимает {variable}, чтобы секрет хранился в окружении, а не в файле; если на вкладке Заголовки уже есть такой же заголовок, действует он. В Теле поле Тип выбирает JSON, XML, SOAP, форму, multipart (текстовые поля и файлы) или файл, отправляемый в двоичном виде, а Content-Type добавляется сам, если вы его не указали. Относительный путь к файлу отсчитывается от папки .lnh. С multipart или файлом стрелка кнопки копирования делает PowerShell и JavaScript серыми: они не умеют отправлять такое тело. Вкладка Настройки меняет тайм-аут (по умолчанию 60 с) и включает переход по перенаправлениям — без этого показывается сам ответ 3xx. Открытый в предыдущей версии LightNote, файл отправляется без аутентификации и без типа, но никогда не превращается в другой запрос. Для локального сервера с собственным сертификатом параметр Не проверять сертификат (HTTPS) отключает проверку: пока он включён, в строке ответа написано сертификат не проверен, и lnote http-run тоже сообщает об этом в отчёте.
Читать ответ. Тело открывается в редакторе кода только для чтения, с подсветкой по типу ответа, сворачиванием блоков и поиском окна (Ctrl+F). Вкладка Cookie перечисляет то, что сервер попросил сохранить, а Хронология показывает точный запрос, который ушёл, — с заголовками, которые добавил сам curl, — и сырые заголовки ответа. Хронология хранится только в памяти: в ней есть Authorization, а файл попадает в Git.
Проверки
Вкладка Проверки показывает, пройден ли тест. Каждая строка
сравнивает часть ответа — статус, заголовок, всё тело, путь JSONPath
($.user.id, $.items[0].name, $.items.length()), путь
XPath (//Price, count(//Item)) или время в миллисекундах —
с ожидаемым значением: равно, не равно, больше, меньше, содержит, соответствует регулярному
выражению, существует или имеет тип. В XPath префикс имени игнорируется, поэтому
soap:Envelope и Envelope — один и тот же шаг. Если проверки есть,
результат решают они: ожидаемый 404 проходит, а 200 с неверным полем не проходит. Результат
каждой проверки виден в последнем столбце, сводка — рядом со значком ответа, а точка теста в
списке становится зелёной или красной. Строка со снятой отметкой остаётся в файле, но не
учитывается в результате.
Кнопка воспроизведения вверху списка запускает все тесты файла по очереди и показывает, сколько из них прошло. Когда тест запущен дважды, кнопка сравнения над телом ответа открывает предыдущий и текущий запуск рядом, с отформатированным телом с обеих сторон. Сохраняется только предыдущий запуск: файл попадает в Git, и длинная история заполняла бы каждый diff.
Окружения, захваты и вся папка
Окружения используют открытый формат JetBrains и VS Code: файл
http-client.env.json в папке (или выше) с объектом для каждого окружения —
{"dev": {"host": "http://localhost:8080"}} — и рядом файл
http-client.private.env.json с секретами, чтобы они не попадали в Git. В одном
окружении побеждает приватный файл, а $shared действует во всех. Селектор рядом с
URL выбирает окружение, а меню импорта и экспорта создаёт файл. Переменная берётся из теста,
затем из захвата, затем из окружения, а вкладка Переменные показывает, откуда пришла
каждая.
Вкладка Захваты сохраняет часть ответа как переменную — token входа,
id только что созданного ресурса — для следующих тестов этого файла и других
файлов той же папки. Так .lnh входа передаёт значение в аутентифицированный
вызов другого файла. Захваченное значение хранится только в памяти и никогда не записывается в
файл.
Папка — это коллекция: lnote http-run --path <папка> --env dev запускает
все её .lnh в естественном порядке (01-login раньше
02-profile) и завершается с ошибкой, если какой-либо тест не прошёл, что подходит
для CI. Тот же запуск доступен через MCP как http_test_run, чтобы ИИ-агент мог
запускать написанные вами тесты. По умолчанию файлы не меняются; --save
записывает в них последний результат каждого теста.
Импорт и экспорт
Импорт и экспорт OpenAPI. Кнопка со стрелками над списком тестов
открывает Импортировать OpenAPI… и Экспортировать OpenAPI…. Импорт читает
спецификацию в формате YAML или JSON в трёх используемых поколениях —
Swagger 2.0, OpenAPI 3.0 и 3.1 — и собирает тест сам:
{parameters} пути уже используют тот же синтаксис, что и переменные
{name} в .lnh, объявленные примеры становятся значениями теста,
схема безопасности превращается в заголовок Authorization, а каждый
объявленный сервер становится отдельным тестом (тестовая и промышленная среда рядом).
Поскольку файл .lnh хранит одну конечную точку, спецификация с
несколькими операциями спросит, какую импортировать, — либо запишет все сразу, по
одному файлу .lnh на операцию.
Экспорт идёт в обратную сторону и создаёт из файла спецификацию OpenAPI 3.0.3: серверы,
параметры и тело берутся из шаблона, а примеры ответов — из записанных запусков. Это
каркас, а не полный контракт: .lnh описывает вызовы, поэтому типы,
описания и схемы не восстанавливаются. Ваши тесты едут в поле
x-lightnote-tests, поэтому при повторном импорте файла возвращаются
нетронутыми.
Импорт команды curl. В той же кнопке пункт Импортировать команду
curl… открывает поле для вставки — команда приходит оттуда, а не с диска, и поле уже
заполнено, если в буфере обмена лежит curl. Понимает три диалекта, в которых
ходит одна и та же команда: Копировать как cURL из Chrome/Firefox (одинарные
кавычки), Copy as cURL (cmd) в Windows (с ^) и пример из документации,
разбитый символом \. Метод берётся из -X — или выводится: POST,
когда есть тело, и GET, когда его нет.
Импорт буквальный: ни одно значение не превращается в переменную
{name} само по себе, потому что угадывать, какой токен является секретом, —
верный способ ошибиться. В нескольких случаях выводится предупреждение вместо подмены:
тело, приходящее из файла (-d @файл), прочитать нельзя, а отправка multipart
(-F) не воспроизводится точно, поэтому поля попадают в тело текстом, чтобы вы
их поправили.
Импорт из другого инструмента. Импортировать из другого инструмента… читает файл .http/.rest (REST Client для VS Code, JetBrains, Visual Studio), коллекцию или окружение Postman, экспорт Insomnia (v4 в JSON или v5 в YAML), HAR, который браузер сохраняет командой Сохранить всё как HAR, .bru из Bruno (или всю папку через Импортировать папку Bruno…) и WSDL SOAP-сервиса. Формат определяется по содержимому, а не по расширению. Каждый запрос становится файлом .lnh, а папки коллекции — папками: выберите один для этого файла или сохраните все сразу. {{name}} превращается в {name}, аутентификация — в заголовок, окружения записываются в http-client.env.json (то, что источник помечает как секрет, — в .private), не меняя уже имеющихся значений, а проверки и захваты Bruno — и pm.response.to.have.status из Postman — становятся здешними проверками и захватами. Из HAR берутся только вызовы API и сама страница, а ответ, полученный браузером, становится последним запуском; из WSDL создаётся по одному SOAP-конверту на операцию, с SOAPAction и каждым полем в виде переменной.
То, у чего нет аналога, остаётся как есть, и об этом сообщается: скрипты до и после запроса не преобразуются, динамические переменные ({{$guid}}) и цепочки остаются буквальными, а Basic с переменной, тело multipart и тело из файла попадают на вкладку Аутентификация и в Тип тела — путь к файлу, пришедший с другой машины, перечисляется для проверки. При сохранении коллекции этот отчёт становится заметкой в папке назначения. Экспортировать как .http… делает обратное с выбранным тестом: шаблон с {{name}} и значения в виде @name = значение.
Указатель
Редактирование
- Обзор
- Первые шаги
- Рабочее пространство и окна
- Центр активности: задачи и сообщения
- Редактор кода
- Markdown и вики-ссылки
- Диаграммы (Mermaid)
- Математика и химия (LaTeX)
- Календарь в заметке
- Нумерация и перекрёстные ссылки
- Цитаты и список литературы
- Стандарт оформления работы
- Граф связей
- Таблицы (Parquet, CSV, JSON, Excel)
- Область анализа: сводная таблица и несколько диаграмм
- PDF и изображения
- Изображения: пометки на снимке
- HTML-страницы (.html)
- Печать
- Zip как папка (.zip)
- Блоки (.lnb)
- Задачи (Kanban / Gantt)
- Пользовательская таблица (.lnd)
- Базы (сохранённые запросы по заметкам)
Инструменты
- Поиск по файлам и раздел «Незавершённые»
- Версионирование (упрощённый Git)
- Снимки состояния и резервные копии
- Просмотр изменений (контрольные точки)
- Сравнение файлов (diff)
- Запуск кода (F5)
- Терминал и ИИ-CLI
- ИИ-ассистент для выделенного текста (Ctrl+K / Ctrl+I)
- ИИ на вашем компьютере
- Сеансы ИИ
- Чат с ИИ
- Тестирование HTTP API (.lnh)
- Базы данных (.lnc)
- SSH-подключение (.lns)
- Безопасность: секретная фраза, PIN и защищённый Markdown
- Ежедневные заметки, быстрый захват и трей
- Вернуть старые заметки
- Ваши заметки на телефоне
- Запись аудио (голос, встреча) с транскрипцией ИИ
- Стикеры
- Календарь
- Палитра команд
Автоматизация (ИИ / скрипты)
Справочник