Spec-Zone.ru › D3.js 5

d3-request

Этот модуль устарел, начиная с D3 5.0; пожалуйста, используйте d3-fetch вместо него.

Этот модуль предоставляет удобную альтернативу XMLHttpRequest. Например, для загрузки текстового файла:

d3.text("/path/to/file.txt", function(error, text) {
  if (error) throw error;
  console.log(text); // Hello, world!
});

Для загрузки и разбора файла CSV:

d3.csv("/path/to/file.csv", function(error, data) {
  if (error) throw error;
  console.log(data); // [{"Hello": "world"}, …]
});

Для отправки параметров запроса:

d3.request("/path/to/resource")
    .header("X-Requested-With", "XMLHttpRequest")
    .header("Content-Type", "application/x-www-form-urlencoded")
    .post("a=2&b=3", callback);

Этот модуль имеет встроенную поддержку разбора JSON, CSV и TSV; в браузерах, но не в Node, также поддерживаются HTML и XML. Вы можете добавить поддержку других форматов, используя request или text напрямую.

Установка

Если вы используете NPM, npm install d3-request. В противном случае, скачайте последнюю версию. Вы также можете загрузить напрямую с d3js.org, либо как отдельную библиотеку, либо как часть D3 4.0. Поддерживаются AMD, CommonJS и vanilla среды. В vanilla, экспортируется глобальная переменная d3:

<script src="https://d3js.org/d3-collection.v1.min.js"></script>
<script src="https://d3js.org/d3-dispatch.v1.min.js"></script>
<script src="https://d3js.org/d3-dsv.v1.min.js"></script>
<script src="https://d3js.org/d3-request.v1.min.js"></script>
<script>

d3.csv("/path/to/file.csv", callback);

</script>

Справочник по API

d3.request(url[, callback]) Исходный код

Возвращает новый запрос для указанного url. Если callback не указан, возвращаемый запрос еще не отправлен и может быть дополнительно настроен. Если callback указан, это эквивалентно вызову request.get сразу после создания:

d3.request(url)
    .get(callback);

Если вы хотите указать заголовок запроса или тип MIME, вы не должны указывать обратный вызов в конструкторе. Используйте request.header или request.mimeType, а затем request.get вместо этого. Смотрите d3.json, d3.csv, d3.tsv, d3.html и d3.xml для конструкторов по умолчанию для конкретных типов контента.

request.header(name[, value]) Исходный код

Если value указан, устанавливает заголовок запроса с указанным name на указанное значение и возвращает этот экземпляр запроса. Если value равно null, удаляет заголовок запроса с указанным name вместо этого. Если value не указан, возвращает текущее значение заголовка запроса с указанным name. Имена заголовков нечувствительны к регистру.

Заголовки запроса могут быть изменены только до момента отправки запроса. Поэтому вы не можете передать callback в конструктор request, если хотите указать заголовок; используйте request.get или аналогично вместо этого. Например:

d3.request(url)
    .header("Accept-Language", "en-US")
    .header("X-Requested-With", "XMLHttpRequest")
    .get(callback);

Примечание: эта библиотека по умолчанию не устанавливает заголовок X-Requested-With в XMLHttpRequest. Некоторые серверы требуют этого заголовка для предотвращения нежелательных запросов, но наличие заголовка запускает проверки CORS preflight; при необходимости установите этот заголовок перед отправкой запроса.

request.mimeType([type]) Исходный код

Если type указан, устанавливает тип MIME запроса на указанное значение и возвращает этот экземпляр запроса. Если type равно null, очищает текущий тип MIME (если таковой есть) вместо этого. Если type не указан, возвращает текущий тип MIME, который по умолчанию равен null. Тип MIME используется для установки заголовка запроса «Accept» и для "Accept" request header и для overrideMimeType, где это поддерживается.

Тип MIME запроса может быть изменён только до момента отправки запроса. Поэтому вы не можете передать callback в конструктор request, если хотите переопределить тип MIME; используйте request.get или аналогично вместо этого. Например:

d3.request(url)
    .mimeType("text/csv")
    .get(callback);
request.user([value]) Исходный код

Если value указан, устанавливает имя пользователя для аутентификации на указанную строку и возвращает этот экземпляр запроса. Если value не указан, возвращает текущее имя пользователя, которое по умолчанию равно null.

request.password([value]) Исходный код

Если value указан, устанавливает пароль для аутентификации на указанную строку и возвращает этот экземпляр запроса. Если value не указан, возвращает текущий пароль, который по умолчанию равен null.

request.timeout([timeout]) Исходный код

Если timeout указан, устанавливает атрибут timeout запроса на указанное количество миллисекунд и возвращает этот экземпляр запроса. Если timeout не указан, возвращает текущий таймаут ответа, который по умолчанию равен 0.

request.responseType([type]) Исходный код

Если type указан, устанавливает атрибут тип ответа запроса и возвращает этот экземпляр запроса. Типичные значения: ​, arraybuffer, blob, document, и text. Если type не указан, возвращает текущий тип ответа, который по умолчанию равен ​.

request.response(value) Исходный код

Устанавливает функцию значения ответа на указанную функцию и возвращает этот экземпляр запроса. Функция значения ответа используется для отображения объекта XMLHttpRequest ответа на полезное значение данных. Смотрите примеры в удобных методах json и text.

request.get([data][, callback]) Исходный код

Эквивалентно request.send с методом GET:

request.send("GET", data, callback);
request.post([data][, callback]) Исходный код

Эквивалентно request.send с методом POST:

request.send("POST", data, callback);
request.send(method[, data][, callback]) Исходный код

Отправляет этот запрос с указанным методом (например, GET или POST), необязательно отправляя указанные данные в теле запроса, и возвращает этот экземпляр запроса. Если указан callback, callback будет вызван асинхронно, когда запрос завершится успешно или с ошибкой. Callback вызывается с двумя аргументами: ошибкой, если она есть, и значением ответа. Значение ответа равно undefined, если произошла ошибка. Это эквивалентно:

request
    .on("error", function(error) { callback(error); })
    .on("load", function(xhr) { callback(null, xhr); })
    .send(method, data);

Если callback не указан, то слушатели «load» и «error» должны быть зарегистрированы через request.on.

request.abort() Исходный код

Прерывает этот запрос, если он в данный момент выполняется, и возвращает этот экземпляр запроса. Смотрите XMLHttpRequest’s abort.

request.on(type[, listener]) Исходный код

Если listener указан, устанавливает обработчик события listener для указанного type и возвращает этот экземпляр запроса. Если обработчик события уже был зарегистрирован для того же типа, существующий обработчик удаляется перед добавлением нового обработчика. Если listener равен null, удаляет текущий обработчик события для указанного type (если таковой есть) вместо этого. Если listener не указан, возвращает текущий назначенный обработчик для указанного типа, если таковой есть.

Тип должен быть одним из следующих:

  • beforesend - чтобы разрешить устанавливать пользовательские заголовки и т. п. до отправки запроса.
  • progress - чтобы отслеживать прогресс запроса.
  • load - когда запрос завершен успешно.
  • error - когда запрос завершен неудачно; это включает коды ответа 4xx и 5xx.

Для регистрации нескольких обработчиков для одного и того же type, тип может быть последован необязательным именем, таким как load.foo и load.bar. Подробности смотрите в d3-dispatch.

d3.csv(url[[, row], callback]) Исходный код

Возвращает новый запрос для файла CSV по указанному url с типом MIME по умолчанию text/csv. Если callback не указан, это эквивалентно:

d3.request(url)
    .mimeType("text/csv")
    .response(function(xhr) { return d3.csvParse(xhr.responseText, row); });

Если callback указан, отправляется запрос GET, что эквивалентно:

d3.request(url)
    .mimeType("text/csv")
    .response(function(xhr) { return d3.csvParse(xhr.responseText, row); })
    .get(callback);

Необязательная функция преобразования row может быть указана для отображения и фильтрации объектов строк до более конкретного представления; см. dsv.parse для подробностей. Например:

function row(d) {
  return {
    year: new Date(+d.Year, 0, 1), // convert "Year" column to Date
    make: d.Make,
    model: d.Model,
    length: +d.Length // convert "Length" column to number
  };
}

Возвращаемый запрос предоставляет дополнительный метод request.row в качестве альтернативы передаче функции преобразования row в d3.csv, позволяя настроить запрос перед отправкой. Например, это:

d3.csv(url, row, callback);

Эквивалентно этому:

d3.csv(url)
    .row(row)
    .get(callback);
d3.html(url[, callback]) Source

Возвращает новый запрос для файла HTML по указанному url с типом MIME по умолчанию text/html. Файл HTML возвращается как фрагмент документа. Если callback не указан, это эквивалентно:

d3.request(url)
    .mimeType("text/html")
    .response(function(xhr) { return document.createRange().createContextualFragment(xhr.responseText); });

Если callback указан, отправляется запрос GET, что эквивалентно:

d3.request(url)
    .mimeType("text/html")
    .response(function(xhr) { return document.createRange().createContextualFragment(xhr.responseText); })
    .get(callback);

Разбор HTML требует глобального документа и опирается на диапазоны DOM, которые не поддерживаются JSDOM по состоянию на версию 8.3; таким образом, этот метод поддерживается в браузерах, но не в Node.

d3.json(url[, callback]) Source

Возвращает новый запрос для получения файла JSON по указанному url с типом MIME по умолчанию application/json. Если callback не указан, это эквивалентно:

d3.request(url)
    .mimeType("application/json")
    .response(function(xhr) { return JSON.parse(xhr.responseText); });

Если callback указан, отправляется запрос GET, что эквивалентно:

d3.request(url)
    .mimeType("application/json")
    .response(function(xhr) { return JSON.parse(xhr.responseText); })
    .get(callback);
d3.text(url[, callback]) Source

Возвращает новый запрос для получения текстового файла по указанному url с типом MIME по умолчанию text/plain. Если callback не указан, это эквивалентно:

d3.request(url)
    .mimeType("text/plain")
    .response(function(xhr) { return xhr.responseText; });

Если callback указан, отправляется запрос GET, что эквивалентно:

d3.request(url)
    .mimeType("text/plain")
    .response(function(xhr) { return xhr.responseText; })
    .get(callback);
d3.tsv(url[[, row], callback]) Source

Возвращает новый запрос для файла TSV по указанному url с типом MIME по умолчанию text/tab-separated-values. Если callback не указан, это эквивалентно:

d3.request(url)
    .mimeType("text/tab-separated-values")
    .response(function(xhr) { return d3.tsvParse(xhr.responseText, row); });

Если callback указан, отправляется запрос GET, что эквивалентно:

d3.request(url)
    .mimeType("text/tab-separated-values")
    .response(function(xhr) { return d3.tsvParse(xhr.responseText, row); })
    .get(callback);

Можно указать необязательную функцию преобразования row для сопоставления и фильтрации объектов строк к более специфическому представлению; см. dsv.parse для получения подробностей. Например:

function row(d) {
  return {
    year: new Date(+d.Year, 0, 1), // convert "Year" column to Date
    make: d.Make,
    model: d.Model,
    length: +d.Length // convert "Length" column to number
  };
}

Возвращаемый запрос предоставляет дополнительный метод request.row в качестве альтернативы передаче функции преобразования row в d3.tsv, позволяя настроить запрос перед его отправкой. Например, это:

d3.tsv(url, row, callback);

Эквивалентно этому:

d3.tsv(url)
    .row(row)
    .get(callback);
d3.xml(url[, callback]) Source

Возвращает новый запрос для получения файла XML по указанному url с типом MIME по умолчанию application/xml. Если callback не указан, это эквивалентно:

d3.request(url)
    .mimeType("application/xml")
    .response(function(xhr) { return xhr.responseXML; });

Если callback указан, отправляется запрос GET, что эквивалентно:

d3.request(url)
    .mimeType("application/xml")
    .response(function(xhr) { return xhr.responseXML; })
    .get(callback);

Разбор XML опирается на xhr.responseXML, который не поддерживается node-XMLHttpRequest по состоянию на версию 1.8; таким образом, этот метод поддерживается в браузерах, но не в Node.

© 2010–2018 Michael Bostock
Licensed under the BSD License.
https://github.com/d3/d3-request

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API