Різноманітні API (інтерфейси прикладного програмування) покликані значно полегшувати життя як розробникам, так і користувачам веб-ресурсів. Вони здатні вирішувати найскладніші задачі, забезпечувати комунікацію між програмами, автоматизувати будь-які процеси. Ми уже детально описували декілька відомих API у Drupal: Database API, Queue API, Batch API, Field API, Ctools modal API і т.д. Сьогодні поговоримо про одну особливу місію, яку можна успішно доручити API: отримання даних з сайту у вигляді зручних CSV-звітів.
CSV-формат: суть і переваги
CSV — популярний формат, що широко використовується для імпорту і експорту даних. Його назва розшифровується як Comma-Separated Values (значення, розділені комами), що і описує суть його роботи. Табличні дані зберігаються у вигляді простого тексту, де значення розділені комами, а рядки — символами нового рядка. Кожне значення відповідає за одну комірку таблиці, а кожен рядок — відповідно, за один рядок таблиці.
CSV-звіти виглядають дуже лаконічно. Розмір CSV-файлу може бути в кілька разів меншим за розмір XML-файлу, що є дуже економним рішенням. Навіть база великого інтернет-магазину може вміститися в 1-2 мегабайти. Однак, варто зазначити, що XML дещо виграє у CSV щодо можливостей складного форматування.
За замовчуванням файл CSV можна переглянути у текстовому редакторі. Крім того, його можна відкрити в Excel, Google Spreadsheets і подібних програмах, а також трансформувати в інші формати для оптимального представлення інформації.
Спеціальна розробка InternetDevels: API для генерування CSV-звітів
Щоб зручно експортувати CSV-дані, створюються спеціальні програмні рішення. Навіть якщо сайт оперує величезною кількістю інформації, завжди є можливість створити функціонал, що забезпечить легке виведення усіх потрібних даних. Це може бути не тільки ваш власний сайт — можна експортувати дані і з інших сайтів, до яких ви маєте доступ або які не є закритими.
У нас уже є досвід створення API для отримання даних з сайту з подальшою генерацією CSV-звітів на основі цих даних — для веб-сайту великої аналітичної платформи в галузі нерухомості. Вона агрегує безліч даних із різних джерел, пропонує можливості обробки і систематизації цих даних, а також переведення їх у зручні формати. Такий функціонал був їй особливо потрібен, і повністю виправдав себе.
Отже, давайте розглянемо, як працює створений нами API. Отримати CSV-звіти можна у кілька кроків: відправлення запиту до сервера, отримання відповіді в форматі JSON, переведення даних в CSV і збереження їх у файлі.
Запитуємо дані
Отже, спочатку нам потрібно відправити GET-запит на сервер. Цей запит складається з двох частин:
- шлях до сайту, який завжди лишається незмінним (при роботі з одним і тим самим сайтом);
- додаткові параметри, які дозволяють максимально кастомізувати наші CSV-звіти, аби вони містили виключно ту інформацію, яка нас цікавить.
Додаткові параметри — це поля і фільтри. Розглянемо їх детальніше.
- Зручний поп-ап продемонструє нам список полів, серед яких можна обрати і відзначити галочками потрібні. Саме такими і будуть назви колонок у майбутній CSV-таблиці (наприклад, ціна, ID, адреса і т.д.).
- Крім того, можна налаштувати фільтри, вказавши, за якими критеріями відсортувати дані. Тоді ми отримаємо тільки ті дані, які підпадають під вказані критерії (наприклад, об’єкти в певному діапазоні цін).
Отримуємо дані, переводимо їх в CSV та зберігаємо у файлі
«Розповівши» серверу в усіх деталях, що ми хочемо побачити в таблиці, ми отримуємо на наш запит відповідь у JSON-форматі. Дані аналізуються на програмному рівні і трансформуються в формат CSV, а потім зберігаються в файлі. Такий файл можна легко завантажити, використати як основу для зручних звітів у будь-яких популярних форматах, наприклад, представити на веб-сайті в HTML і так далі.
Для швидкого отримання статистики наш API працює з потужним сервісом Solr, який зберігає, індексує та оперативно шукає потрібні дані.
Ми із задоволенням візьмемось за створення функціоналу для CSV-звітів або будь-якого іншого, що відкриє для вашого веб-ресурсу нові можливості. Розкажіть нам про свої потреби та ідеї — і ідеальне програмне рішення не змусить на себе чекати!