Агентство по окружающей среде — API

#jquery #json #api

#jquery #json #API

Вопрос:

Я хотел бы создать простой веб-инструмент для запроса данных Enviroment Agency (EA) через их API. Их инструкции здесь: http://environment.data.gov.uk/flood-monitoring/doc/reference

Я хотел бы использовать jquery, если это возможно.

Мой вопрос: предоставляет ли приведенная выше ссылка достаточно информации для выполнения моей задачи? Причина, по которой я спрашиваю, заключается в том, что я изо всех сил пытаюсь приступить к выполнению этой задачи.

Я бы ожидал написать что-то вроде следующего, чтобы подсчитать количество записей, например:

 $.ajax({
    url: 'http://environment.data.gov.uk/flood-monitoring', //not sure if this link is correct
    type: 'GET', 
    success: function(data){
        alert(data.length ' package(s) found')
    },
    error: function() {
        alert('Failed to get the list of packages.')
    },
    dataType: 'jsonp',
    jsonpCallback: 'jsonpcallback'
});
  

Ссылка выше, похоже, не содержит таких инструкций.
Я отправил электронное письмо советнику, чтобы запросить пример кода, но, похоже, у них его нет.

Мы будем признательны за любые отзывы о том, отсутствуют ли в приведенной выше ссылке важные инструкции для ссылки на их API. Если ответ «да», то я знаю, что нужно продолжать запрашивать у советника дополнительные инструкции. В противном случае больше чтения для меня!

Заранее спасибо

Комментарии:

1. посмотрите на environment.data.gov.uk/flood-monitoring/doc/… где они используют URL-адрес environment.data.gov.uk/flood-monitoring/id/floods

2. Не используйте jsonp, сервер его не обрабатывает. Смотрите пример использования jQuery: jsfiddle.net/52jk5o8n/1

Ответ №1:

Данные ответа представляют собой объект, а не массив. Итак, data.length не работает. Попробуйте Object.keys(data) , и вы увидите, что у вас есть данные.

 $.ajax({
    url: 'http://environment.data.gov.uk/flood-monitoring/data/readings?latest',
    type: 'GET',
    success: function(data){
        var keys = Object.keys(data);
        var size = keys.length;
        console.log('number of keys: '   size);
        if (size) {
            keys.map(function(key, i){
                console.log('key: '   key);
                if (key == '@context') {
                    console.log('  '   data[key]);
                }
                else if (key == 'meta') {
                    console.log('  '   JSON.stringify(data[key]));
                }
                else if (key == 'items') {
                    console.log('data[items][0]:');
                    console.log('  '   JSON.stringify(data[key][0]));
                }
            });
        }
    },
    error: function() {
        console.error('Failed to get the list of packages.')
    }
});