Spec-Zone.ru › D3.js 6

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 и обычные среды. В обычной среде экспортируется глобальная переменная 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, вы не должны указывать callback в конструкторе. Используйте 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.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" и для overrideMimeType, где это поддерживается.

Тип MIME запроса может быть изменён только до того, как запрос отправлен. Поэтому вы не можете передавать callback в конструктор запроса, если хотите изменить тип 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]) Исходный код

Выполняет этот запрос с указанным method (например, GET или POST), необязательно отправляя указанные data в теле запроса, и возвращает этот экземпляр запроса. Если указан 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]) Исходный код

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

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

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

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

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

d3.json(url[, обработчик]) Исходный код

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

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

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

d3.request(url)
    .mimeType("application/json")
    .response(function(xhr) { return JSON.parse(xhr.responseText); })
    .get(callback);
d3.text(url[, обработчик]) Исходный код

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

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

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

d3.request(url)
    .mimeType("text/plain")
    .response(function(xhr) { return xhr.responseText; })
    .get(callback);
d3.tsv(url[[, строка], обработчик]) Исходный код

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

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

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

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

Можно указать необязательную функцию преобразования строка для отображения и фильтрации объектов строк до более специфической формы представления; см. 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
  };
}

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

d3.tsv(url, row, callback);

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

d3.tsv(url)
    .row(row)
    .get(callback);
d3.xml(url[, обработчик]) Исходный код

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

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

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

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

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

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

Spec-Zone.ru

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