Class: ClientRequest
Class: ClientRequest
Создает HTTP/HTTPS-запросы.
Process: Main, Utility
This class is not exported from the 'electron'
module. Он доступен только в качестве возвращаемого значения других методов в Electron API.
ClientRequest
реализует интерфейс Writable Stream и EventEmitter.
new ClientRequest(options)
Свойства options
, такие как protocol
, host
, hostname
, port
и path
, строго следуют модели Node.js, которая описана в модуле URL.
Например, мы могли бы создать такой же запрос на 'github.com' следующим образом:
const request = net.request({
method: 'GET',
protocol: 'https:',
hostname: 'github.com',
port: 443,
path: '/'
})
События экземпляра
Событие: 'response'
Возвращает:
response
IncomingMessage - Объект, представляющий ответ HTTP.
Событие: 'login'
Возвращает:
authInfo
ObjectisProxy
booleanscheme
stringhost
stringport
Integerrealm
string
callback
Functionusername
string (optional)password
string (optional)
Происходит, когда прокси-сервер, выполняющий проверку подлинности, запрашивает учетные данные пользователя.
Ожидается, что функция callback
будет вызвана с учетными данными пользователя:
username
stringpassword
string
request.on('login', (authInfo, callback) => {
callback('username', 'password')
})
Предоставление пустых учетных данных отменит запрос и сообщит об ошибке проверки подлинности в объекте ответа:
request.on('response', (response) => {
console.log(`STATUS: ${response.statusCode}`)
response.on('error', (error) => {
console.log(`ERROR: ${JSON.stringify(error)}`)
})
})
request.on('login', (authInfo, callback) => {
callback()
})
Событие: 'finish'
Происходит сразу после того, как последняя часть данных запроса
была записана в объект request
.
Событие: 'abort'
Возникает при прерывании request
. Событие abort
не будет запущено, если request
уже закрыт.
Событие: 'error'
Возвращает:
error
Error - объект ошибки, содержащий некоторую информацию о неудаче.
Происходит, когда модулю net
не удается выполнить сетевой запрос. Обычно, когда объект request
генерирует событие error
, в последствии последует событие close
и не будет представлен объект ответа.
Событие: 'close'
Происходит как последнее событие в транзакции HTTP запроса-ответа. Событие close
указывает, что больше события не будут происходить ни на request
, ни на response
объектах.
Событие: 'redirect'
Возвращает:
statusCode
Integermethod
stringredirectUrl
stringresponseHeaders
Record<string, string[]>
Используется при возврате сервером перенаправленного ответа (например, 301 Перемещено навсегда). Вызов request.followRedirect
продолжится с перенаправлением. Если событие обработано, request.followRedirect
должен вызываться синхронно, в противном случае запрос будет отменен.
Свойства экземпляра
request.chunkedEncoding
boolean
, определяющий, будет ли запрос использовать в HTTP шифрование передачи частей или нет. По умолчанию - false. Свойство доступно для чтения и записи, в любом случае оно может быть установлено только до первой операции записи, поскольку HTTP-заголовки еще не отправлены. Попытка установить свойство chunkedEncoding
после первой записи вызовет ошибку.
Использование шифрование частей настоятельно рекомендуется, если Вам необходимо отправить большое содержимое запроса как данные, которые будут передаваться в потоке малыми частями вместо внутренней буферизации в памяти процесса Electron.
Методы экземпляра
request.setHeader(name, value)
name
string - имя дополнительного HTTP-заголовка.value
string - значение дополнительного HTTP-заголовка.
Добавляет дополнительный HTTP-заголовок. Имя заголовка будет выдано как есть, без нижнего регистра. Может быть вызвано только перед первой записи. Вызов этого метода после первой записи вызовет ошибку. Если переданное значение это не string
, тогда метод toString()
будет вызван, чтобы получить конечное значение.
Certain headers are restricted from being set by apps. These headers are listed below. More information on restricted headers can be found in Chromium's header utils.
Content-Length
Host
Trailer
orTe
Обновить
Cookie2
Keep-Alive
Transfer-Encoding
Additionally, setting the Connection
header to the value upgrade
is also disallowed.
request.getHeader(name)
name
string - укажите имя дополнительного заголовка.
Возвращает string
- значение ранее установленного дополнительного заголовка.
request.removeHeader(name)
name
string - укажите имя дополнительного заголовка.
Удаляет ранее установленное дополнительное имя заголовка. Этот метод может быть вызван только перед первой записью. Попытка вызвать его после первой записи приведет к ошибке.
request.write(chunk[, encoding][, callback])
chunk
(string | Buffer) - Часть данных в теле запр оса. Если это строка, то она преобразуется в буфер в заданной кодировке.encoding
string (опционально) - используется для конвертирования строковые части в объект Buffer. По умолчанию 'utf-8'.callback
Function (опционально) - вызывается после того, как закончится операция записи.
callback
является по существу фиктивной функцией, представленной в целях сохранения схожести с API Node.JS. Вызывается асинхронно в следующем такте, после содержимое chunk
будет отправлено в сетевой слой Chromium. В отличие от реализации Node.JS, не гарантировано, что содержимое chunk
будет отправлено до вызова callback
.
Добавляет часть данных в содержимое запроса. Первая операция записи может привести тому, что заголовки запроса будут отправлены. После первой операции записи, недопустимо добавлять или удалять пользовательские заголовки.
request.end([chunk][, encoding][, callback])
chunk
(string | Buffer) (опционально)encoding
string (опционально)callback
Function (опционально)
Возвращает this
.
Отправляет последний фрагмент данных запроса. Последующие операции по записи или завершению не будут разрешены. Событие finish
происходит сразу после завершения операции.
request.abort()
Отменяет текущую транзакцию HTTP. Если запрос уже сгенерировал событие close
, операция прерывания не будет иметь эффекта. Иначе текущее событие будет генерировать события abort
и close
. Кроме того, если есть текущий объект ответа, будет сгенерировано событие aborted
.
request.followRedirect()
Continues any pending redirection. Can only be called during a 'redirect'
event.
request.getUploadProgress()
Возвращает Object
:
active
boolean - Активен ли запрос в данный момент. Если это false, никакие другие свойства не будут установленыstarted
boolean - Началась ли загрузка. Если это false, то иcurrent
иtotal
будут установлены в 0.current
Integer - количество байтов, которые были загруженыtotal
Integer - количество байтов, которые будут загружены в этом запросе
Вы можете использовать этот метод в сочетании с запросами POST
, чтобы получить прогресс загрузки файла или другой передачи данных.