類別:ClientRequest
類別:ClientRequest
發出 HTTP/HTTPS 請求。
程序:主程序, 工具程序
此類別未從 'electron'
模組匯出。它僅作為 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
物件isProxy
booleanscheme
字串host
字串port
Integerrealm
字串
callback
函數username
字串 (選用)password
字串 (選用)
當驗證 Proxy 要求使用者憑證時發出。
預期使用使用者憑證回呼 callback
函數
username
字串password
字串
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
資料區塊寫入 request
物件後立即發出。
事件:'abort'
當 request
被中止時發出。如果 request
已關閉,則不會觸發 abort
事件。
事件:'error'
回傳
error
錯誤 - 提供有關失敗資訊的錯誤物件。
當 net
模組無法發出網路請求時發出。通常,當 request
物件發出 error
事件時,隨後會跟著 close
事件,並且不會提供回應物件。
事件:'close'
作為 HTTP 請求-回應交易中的最後一個事件發出。close
事件表示在 request
或 response
物件上將不再發出任何事件。
事件:'redirect'
回傳
statusCode
Integermethod
字串redirectUrl
字串responseHeaders
Record<string, string[]>
當伺服器傳回重新導向回應 (例如 301 Moved Permanently) 時發出。呼叫 request.followRedirect
將繼續進行重新導向。如果處理了此事件,則必須同步呼叫 request.followRedirect
,否則請求將被取消。
實例屬性
request.chunkedEncoding
一個 boolean
,指定請求是否將使用 HTTP 分塊傳輸編碼。預設為 false。該屬性是可讀寫的,但是只能在第一次寫入操作之前設定,因為 HTTP 標頭尚未放在網路上。嘗試在第一次寫入後設定 chunkedEncoding
屬性將會拋出錯誤。
如果您需要傳送大型請求 body,強烈建議使用分塊編碼,因為資料將以小區塊串流傳輸,而不是在 Electron 程序記憶體內部緩衝。
實例方法
request.setHeader(name, value)
name
字串 - 額外的 HTTP 標頭名稱。value
字串 - 額外的 HTTP 標頭值。
新增額外的 HTTP 標頭。標頭名稱將按原樣發出,不進行小寫轉換。它只能在第一次寫入之前呼叫。在第一次寫入後呼叫此方法將會拋出錯誤。如果傳遞的值不是 string
,則將呼叫其 toString()
方法以取得最終值。
某些標頭被限制應用程式設定。這些標頭列在下方。有關受限標頭的更多資訊,請參閱 Chromium 的標頭工具。
Content-Length
Host
Trailer
或Te
Upgrade
Cookie2
Keep-Alive
Transfer-Encoding
此外,將 Connection
標頭設定為值 upgrade
也是不允許的。
request.getHeader(name)
name
字串 - 指定額外的標頭名稱。
回傳 string
- 先前設定的額外標頭名稱的值。
request.removeHeader(name)
name
字串 - 指定額外的標頭名稱。
移除先前設定的額外標頭名稱。此方法只能在第一次寫入之前呼叫。嘗試在第一次寫入後呼叫它將會拋出錯誤。
request.write(chunk[, encoding][, callback])
chunk
(字串 | Buffer) - 請求 body 資料的區塊。如果它是字串,則會使用指定的編碼將其轉換為 Buffer。encoding
字串 (選用) - 用於將字串區塊轉換為 Buffer 物件。預設為 'utf-8'。callback
函數 (選用) - 在寫入操作結束後呼叫。
callback
本質上是一個虛設函數,引入的目的是為了與 Node.js API 保持相似性。在 chunk
內容傳遞到 Chromium 網路層後,它會在下一個 tick 中非同步呼叫。與 Node.js 實作相反,不能保證在呼叫 callback
之前,chunk
內容已刷新到網路上。
將資料區塊新增到請求 body。第一次寫入操作可能會導致在網路上發出請求標頭。在第一次寫入操作之後,不允許新增或移除自訂標頭。
request.end([chunk][, encoding][, callback])
chunk
(字串 | Buffer) (選用)encoding
字串 (選用)callback
函數 (選用)
回傳 this
。
傳送請求資料的最後一個區塊。將不允許後續的寫入或結束操作。finish
事件在結束操作後立即發出。
request.abort()
取消進行中的 HTTP 交易。如果請求已發出 close
事件,則中止操作將不起作用。否則,進行中的事件將發出 abort
和 close
事件。此外,如果存在進行中的回應物件,則它將發出 aborted
事件。
request.followRedirect()
繼續任何待處理的重新導向。只能在 'redirect'
事件期間呼叫。
request.getUploadProgress()
回傳 Object
active
boolean - 請求目前是否處於活動狀態。如果為 false,則不會設定其他屬性started
boolean - 上傳是否已開始。如果為 false,則current
和total
都將設定為 0。current
Integer - 至今已上傳的位元組數total
Integer - 此請求將上傳的位元組數
您可以結合 POST
請求使用此方法,以取得檔案上傳或其他資料傳輸的進度。