原文:https://github.com/electron/electron/blob/master/docs/api/net.md
譯者:Lin
使用Chromium的原生網(wǎng)絡(luò)庫(kù)發(fā)出HTTP/HTTPS請(qǐng)求。
進(jìn)程:主進(jìn)程
net模塊是一個(gè)發(fā)送HTTP(S)請(qǐng)求的客戶端接口。它類似于Node.js中的HTTP和HTTPS模塊,但是使用Chromium的原生網(wǎng)絡(luò)庫(kù)代替Node.js的實(shí)現(xiàn),可以提供更好的網(wǎng)絡(luò)代理。
下面是為什么你可以使用net模塊代替本地Node.js模塊的不完全的理由的列表:
- 自動(dòng)管理系統(tǒng)代理配置,支持自動(dòng)發(fā)現(xiàn)協(xié)議和代理PAC配置文件。
- Automatic tunneling of HTTPS requests.
- 驗(yàn)證協(xié)議支持使用
basic,digest,NTLM,Kerberos或negotiate的認(rèn)證方式。 - 支持交換控制協(xié)議:Fiddler-like代理用于監(jiān)控和操作。
net模塊接口已經(jīng)特別的設(shè)計(jì)用于模仿,盡可能的接近熟悉的Node.js接口。這個(gè)接口組成包括類,方法,屬性和事件名稱都和通常使用的Node.js接口相似。
例如,下面的例子快速展示了net接口如何被使用:
const {app} = require('electron')
app.on('ready', () => {
const {net} = require('electron')
const request = net.request('https://github.com')
request.on('response', (response) => {
console.log(`STATUS: ${response.statusCode}`)
console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
})
response.on('end', () => {
console.log('No more data in response.')
})
})
request.end()
})
順便說(shuō)一下,這個(gè)和你正常使用Node.js的HTTP/HTTPS模塊幾乎完全類似。
net接口只可以在應(yīng)用分發(fā)ready事件之后使用。如果試圖在ready事件之前使用將會(huì)拋出一個(gè)錯(cuò)誤。
<h2 id="methods">Methods</h2>
net模塊有下面的方法:
<h3 id="net-request"><code>net.request(options)</code></h3>
-
options(Object | String)類型 -ClientRequest構(gòu)造器選項(xiàng)。
返回值為ClientRequest類型
使用提供的options創(chuàng)建一個(gè)ClientRequest實(shí)例,options將會(huì)被直接轉(zhuǎn)發(fā)給ClientRequest構(gòu)造器。net.request方法將會(huì)根據(jù)在options中指定的協(xié)議方式被用來(lái)發(fā)送安全和不安全的HTTP請(qǐng)求。