Створення REST-клієнта в Lazarus крок за кроком
15.02.2026Вступ
Lazarus і Free Pascal дають змогу швидко розробляти кросплатформені застосунки, які взаємодіють з REST API. У цьому матеріалі ми пройдемося по базових кроках створення REST-клієнта: налаштування проекту, виконання GET та POST запитів, парсинг JSON, обробка помилок і поради щодо безпеки та продуктивності.
Необхідні компоненти та підготовка
- Встановлений Lazarus і Free Pascal.
- Бібліотеки для HTTP: модуль
fphttpclient. - Модулі для роботи з JSON:
fpjsonтаjsonparser. - Для HTTPS необхідні OpenSSL-бібліотеки (в деяких системах) та модуль для SSL (наприклад,
opensslsocketsабо відповідний пакет для вашої платформи). - Знання основ Pascal/ObjFPC та роботи з потоками, якщо ви плануєте виконувати запити асинхронно.
Крок 1: Створення проекту та базове налаштування
Створіть новий проект у Lazarus (Application). Додайте у секцію uses такі модулі: fphttpclient, fpjson, jsonparser, classes, sysutils. Ми створимо TFPHTTPClient програмно та будемо використовувати його для запитів.
Приклад базової ініціалізації
uses fphttpclient, fpjson, jsonparser, classes, sysutils;
var
client: TFPHTTPClient;
begin
client := TFPHTTPClient.Create(nil);
try
client.ConnectTimeout := 5000; // мс
client.ReadTimeout := 10000; // мс
// додаткові налаштування
finally
client.Free;
end;
end.
Крок 2: Виконання GET-запиту і парсинг JSON
Найпоширеніша операція — отримати список ресурсів або один об’єкт. TFPHTTPClient повертає рядок із тілом відповіді, який можна передати в парсер JSON.
// Приклад GET
var
resp: string;
jsonData: TJSONData;
begin
resp := client.Get('https://api.example.com/items');
jsonData := GetJSON(resp);
try
// обробка jsonData, наприклад, як масив
// TJSONArray(jsonData).Count тощо
finally
jsonData.Free;
end;
end;
Обробка помилок і таймаути
Завжди обгортуйте виклики в try..except, щоб коректно обробляти мережеві помилки. Встановіть підходящі значення ConnectTimeout і ReadTimeout, щоб уникнути зависань у UI.
Крок 3: Надсилання POST-запиту з JSON
Щоб відправити JSON на сервер, сформуйте TStringStream з вмістом і встановіть заголовок Content-Type.
uses fphttpclient, classes, sysutils;
var
reqStream: TStringStream;
resp: string;
jsonBody: string;
begin
jsonBody := '{"name":"Test","value":123}';
reqStream := TStringStream.Create(jsonBody, TEncoding.UTF8);
try
client.AddHeader('Content-Type','application/json');
resp := client.Post('https://api.example.com/items', reqStream);
// обробити resp
finally
reqStream.Free;
end;
end;
Специфіка передачі даних
- Якщо API очікує інші заголовки або авторизацію, додайте їх через
AddHeader. - Для авторизації по токену використовуйте
Authorization: Bearer <token>.
SSL/HTTPS та сертифікати
Для роботи з HTTPS потрібно, щоб на системі були доступні бібліотеки OpenSSL або відповідні модулі платформенної підтримки SSL. У деяких випадках треба підключити модуль типу opensslsockets у секції uses та переконатися, що динамічні бібліотеки OpenSSL встановлені. Завжди перевіряйте підпис сертифіката та за потреби реалізуйте додаткову валідацію, якщо API вимагає високого рівня безпеки.
Поради щодо продуктивності та безпеки
- Повторно використовувати один екземпляр TFPHTTPClient для кількох запитів замість створення нового на кожен запит.
- Виконуйте мережеві операції у фоновому потоці або з використанням TThread/асинхронних механізмів, щоб не блокувати інтерфейс.
- Установіть адекватні таймаути та обробку повторних спроб (retry) для тимчасових помилок мережі.
- Валідуйте і фільтруйте дані, отримані з API, та коректно обробляйте помилки парсингу JSON.
- Не зберігайте токени й секрети у відкритому вигляді у коді — використовуйте конфігураційні файли або захищені сховища.
Висновок
Lazarus дає достатньо інструментів для створення надійного REST-клієнта з мінімальними зусиллями. З розумним налаштуванням TFPHTTPClient, обробкою JSON і увагою до SSL та багатопоточності ви зможете інтегрувати ваші програми з будь-якими веб-сервісами. Почніть з простих GET/POST прикладів, а далі розширюйте функціонал відповідно до вимог API.