類別:ClientRequest
類別:ClientRequest
發出 HTTP/HTTPS 請求。
進程:主,工具
此類別並未從 'electron'
模組匯出。它僅作為 Electron API 中其他方法的傳回值提供。
ClientRequest
實作 Writable Stream 介面,因此是一個 EventEmitter。
new ClientRequest(options)
options
屬性 (例如 protocol
、host
、hostname
、port
和 path
) 嚴格遵循 URL 模組中所述的 Node.js 模型。
例如,我們可以建立與 'github.com' 相同的請求,如下所示
const request = net.request({
method: 'GET',
protocol: 'https:',
hostname: 'github.com',
port: 443,
path: '/'
})
實例事件
事件:'response'
傳回
response
IncomingMessage - 代表 HTTP 回應訊息的物件。
事件:'login'
傳回
authInfo
物件isProxy
布林值scheme
字串host
字串port
整數realm
字串
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
整數method
字串redirectUrl
字串responseHeaders
Record<string, string[]>
當伺服器傳回重新導向回應 (例如,301 Moved Permanently) 時發出。呼叫 request.followRedirect
將繼續重新導向。如果處理此事件,則必須同步呼叫 request.followRedirect
,否則將會取消請求。
實例屬性
request.chunkedEncoding
一個 boolean
,指定請求是否會使用 HTTP 分塊傳輸編碼。預設值為 false。該屬性是可讀寫的,但是只能在第一次寫入操作之前設定,因為 HTTP 標頭尚未放在網路上。嘗試在第一次寫入後設定 chunkedEncoding
屬性會擲回錯誤。
如果需要傳送大型請求主體,則強烈建議使用分塊編碼,因為資料會以小區塊的形式串流傳輸,而不是在 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 - 指定額外的標頭名稱。
傳回 string
- 先前設定的額外標頭名稱的值。
request.removeHeader(name)
name
string - 指定額外的標頭名稱。
移除先前設定的額外標頭名稱。此方法只能在第一次寫入之前呼叫。嘗試在第一次寫入後呼叫它會拋出錯誤。
request.write(chunk[, encoding][, callback])
chunk
(string | Buffer) - 請求主體資料的一個區塊。如果它是字串,則會使用指定的編碼將其轉換為 Buffer。encoding
string (選用) - 用於將字串區塊轉換為 Buffer 物件。預設為 'utf-8'。callback
Function (選用) - 在寫入操作結束後呼叫。
callback
本質上是一個虛擬函式,引入的目的是為了與 Node.js API 保持相似性。在 chunk
內容傳遞到 Chromium 網路層後,它會在下一個刻度以非同步方式呼叫。與 Node.js 實作相反,不能保證在呼叫 callback
之前 chunk
內容已在網路上刷新。
將資料區塊新增至請求主體。第一次寫入操作可能會導致請求標頭在網路上發出。在第一次寫入操作之後,不允許新增或移除自訂標頭。
request.end([chunk][, encoding][, callback])
chunk
(string | Buffer) (選用)encoding
string (選用)callback
Function (選用)
傳回 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
請求結合使用,以取得檔案上傳或其他資料傳輸的進度。