Формати відповідей
Один ресурс пошуку - шість варіантів запису відповіді. Вибирайте через
format=; JSON використовується за замовчуванням, і решту
форматів описано відносно нього.
format | Content-Type | Вигляд |
|---|---|---|
json | application/json | Один об’єкт, результати - в масиві. |
ndjson | application/x-ndjson | Один JSON-об’єкт на рядок. Перший рядок - метадані з позначкою "object":"meta". |
xml | application/xml | Той самий документ у XML, рядки - як <result>. |
csv | text/csv | Роздільник - крапка з комою, без рядка заголовків. |
tsv | text/tab-separated-values | Як CSV, роздільник - табуляція. |
txt | text/plain | Один URL на рядок. |
jsonl приймається як інша назва для ndjson.
Що вибрати
json - для всього, що вміщується в пам’ять. ndjson - для всього, що не вміщується: немає зовнішнього масиву, на який треба чекати, метадані надходять раніше за рядки, і читач може почати обробляти перший результат, поки решта ще надходить. csv, tsv і txt - для електронних таблиць, конвеєрів командного рядка і для перенесення скрипту зі старих URL експорту без зміни його парсера.
ndjson
{"object":"meta","query":"\"angular.min.js\"","page":1,"per_page":2,"total":278,"total_pages":139,"returned":2,"truncated":false,"took_ms":2}
{"domain":"imgbox.com","url":"https://imgbox.com/","rank":4187,"ranked":true}
{"domain":"angularjs.org","url":"https://angularjs.org/","rank":12376,"ranked":true}
Вибір колонок
json і xml повертають усі поля. Пласкі формати
натомість за замовчуванням повертають звичні колонки, тож скрипту, що
переходить зі старих URL експорту, не потрібно міняти парсер:
| Запит | Результат |
|---|---|
format=csv | imgbox.com;4187 |
format=csv&columns=url,rank | https://imgbox.com/;4187 |
format=csv&columns=domain | imgbox.com |
format=txt | https://imgbox.com/ |
format=csv&snippets=1 | imgbox.com;4187;the matching text |
format=csv&header=1 | спочатку рядок domain;rank |
format=csv&delimiter=, | imgbox.com,4187 |
columns працює для будь-якого формату, тож format=json
з columns=domain повертає об’єкти лише з цим полем.
Особливості пласких форматів
- Значення береться в лапки, лише коли інакше воно зламало б рядок - містить роздільник, лапку чи перенос рядка. Звичайний вивід
domain;rank- без лапок. - Лапки всередині значення в лапках подвоюються, як і належить у CSV.
- Фрагменти, оскільки це список, об’єднуються через
...в одну клітинку. - У сайту без рейтингу клітинка рейтингу порожня - так тут записується
null. - Підсумки не вміщуються в рядок, тому вони передаються в заголовках
X-Total-Results,X-Returned-ResultsіX-Truncated. Ці заголовки надсилаються для кожного формату.
Це власні формати нового API, а не перевидання старих експортів. Вигляд навмисно знайомий, але точну відповідність байт у байт гарантують лише старі URL.
Формати й помилки
csv, tsv і txt призначені лише для
рядків, тому запит одного з них до /v1/account дає
400 format_not_available. Самі помилки повертаються в JSON
або в XML, якщо запитано саме його.