API для базы данных?

Пожалуйста, предположите, что я ничего не знаю ни о каких вещах, которые я буду упоминать, потому что я действительно не знаю.


Большинство сайтов OpenData имеют возможность экспорта представленного файла, например, в форматах.csv или.json ( пример). У них также всегда есть вкладка API ( Пример API).

Я предполагаю, что использование API будет означать, что если данные будут обновлены, вы получите изменение, тогда как экспорт в формате.csv будет означать, что содержимое больше не будет изменяться.

Мои вопросы: как использовать этот код API для отображения той же таблицы, которую можно получить при экспорте файла.csv.

Вы бы использовали базу данных для извлечения этой информации? Что за база данных и как вы связываете API с базой данных?

3 ответа

Решение

Я предполагаю, что использование API будет означать, что если данные будут обновлены, вы получите изменение, тогда как экспорт в формате.csv будет означать, что содержимое больше не будет изменяться.

Вы правы в том смысле, что если вы загрузите CSV на свой компьютер, этот CSV-файл больше не будет обновляться.
API - это то, что вы бы назвали - в этом случае вы можете позвонить в API и сказать: "Привет, у вас есть последние данные о xxx?", И вам вернут последнюю информацию о том, что вы спросили. Однако это не означает, что этот сайт будет уведомлять вас о появлении нового обновления - вам придется продолжать вызывать API (каждый час, каждый день и т. Д.), Чтобы узнать, есть ли какие-либо изменения.

Мои вопросы: как использовать этот код API для отображения той же таблицы, которую можно получить при экспорте файла.csv.

Ты бы:

  1. Вызов API из кода сервера или облачного сервиса
  2. Позвольте коду сервера или облачному сервису расшифровать (или "проанализировать") ответ
  3. Используйте расшифрованный ответ, чтобы создать таблицу из HTML или поместить ее в базу данных.

Вы бы использовали базу данных для извлечения этой информации? Что за база данных и как вы связываете API с базой данных?

Вам не обязательно нужна база данных для извлечения информации, хотя базу данных было бы неплохо разместить в ней окончательные данные.
Сначала вам понадобится какой-то способ "вызвать REST API". Есть много способов сделать это - используя Shell Script, Python, Excel VBA и т. Д.
Я понимаю, что это трудно визуализировать, поэтому вот пример шага 1, где вы можете получить информацию.
Попробуйте разместить в приведенном ниже URL-адресе (взятом с сайта, который вы нам показали) в адресной строке браузера Chrome и нажмите клавишу ввода http://opendata.brussels.be/api/records/1.0/search/?dataset=associations-clubs-sportifs

Посмотрите, как он возвращает много текста с множеством скобок и запятых? Вы в основном просили сайт предоставить вам некоторые данные, и это ответ, который они ответили (разные браузеры работают по-разному - IE просит вас загрузить ответ в виде файла.json). Вы в основном назвали API.

Чтобы увидеть эти данные более четко, откройте инструменты разработчика своего браузера Chrome и введите следующий код JavaScript

var url = 'http://opendata.brussels.be/api/records/1.0/search/?dataset=associations-clubs-sportifs';

var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onload = function() {
    if (xhr.status === 200) {
        // success
        console.log(JSON.parse(xhr.responseText));
    } else {
        // error
        console.log(JSON.parse(xhr.responseText));
    }
};
xhr.send();

Когда вы нажмете Enter, ответ вернется, заявив "Объект". Если вы щелкнете по стрелкам, то увидите, что это более чистая версия данных, которые мы только что видели, - более удобочитаемая.

В этом случае я использовал JavaScript для извлечения данных, но вы можете использовать любой код, который вы хотите. Вы можете перейти к использованию JavaScript для расшифровки данных, манипулирования ими и передачи их в базу данных.

kintone - это онлайновая облачная база данных, в которой вы можете настроить ее для работы с кодами JavaScript и сохранять данные в своей базе данных, поэтому вы будете хранить данные в Интернете, как показано на рисунке ниже. Это только один пример базы данных, которую вы можете использовать.

Существуют и другие облачные сервисы, которые позволяют вам соединять конечные точки API разных сервисов, например, IFTTT и Zapier, но я не уверен, что они связаны с открытыми данными.

Страница, на которую вы ссылаетесь, показывает, что API возвращает значения в виде объекта JSON. Для доступа к данным вы можете просто отправить соответствующий http-запрос, и ответом будут запрошенные данные в виде JSON. Вы можете отправлять такие запросы через браузер, если хотите.

Большинство языков позволяют программно манипулировать объектами JSON, если вам нужно работать с данными.

Модель публикации Restful API — «запросить и опубликовать». Когда вы запрашиваете данные через конечную точку API, вы получаете строки ответа в объектах JSON, таблицах CSV или XML.

Издатель, в данном случае Opendata.brussel.be, будет регулярно обновлять свою базу данных и публиковать результаты через конечную точку API.

Если вы хотите скачать таблицу как таблицу реляционных данных в CSV-файле, вам нужно разбить объекты JSON на реляционные таблицы. Это может быть сложно, поскольку пути каждой строки ответа JSON могут различаться.

Есть несколько способов сделать это. Вы можете либо написать сценарии для выравнивания объектов JSON, либо использовать инструмент для анализа и выравнивания объектов за вас.

Я использую инструмент под названием Acho для преобразования конечных точек API в файлы CSV. Он будет анализировать почти все конечные точки API по параметрам и даже настраивать для нескольких запросов, таких как итеративные и рекурсивные запросы.

Парсер Acho API

Другие вопросы по тегам