net
Émettre des requêtes HTTP/HTTPS à l'aide de la bibliothèque réseau native de Chromium
Le module net
est une API côté client pour émettre des requêtes HTTP(S). Il est semblable aux modules HTTP et HTTPS de Node.js, mais utilise la bibliothèque réseau native de Chromium au lieu de l'implémentation de Node.js, offrant ainsi un meilleur support pour les proxy web. Il prend également en charge la vérification de l'état du réseau.
Voici une liste non exhaustive de pourquoi vous devriez utiliser le module net
plutôt que les modules natifs de Node.js :
- Gestion automatique de la configuration de proxy système, support du protocole wpad et les fichiers de configuration de proxy pac.
- Tunnel automatique des requêtes HTTPS.
- Prise en charge de l'authentification proxy en utilisant basic, digest, NTLM, Kerberos ou en négociant des schémas d'authentification.
- Prise en charge des proxy de surveillance du trafic: Proxy de type Fiddler utilisés pour le contrôle et la surveillance des accès.
Les composants de l'API (y compris les classes, méthodes, propriétés et noms d'événements) sont similaires à ceux utilisés dans Node.js.
Exemple d'utilisation :
const { app } = require('electron')
app.whenReady().then(() => {
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()
})
L'API net
ne peut être utilisée qu'après que l'application ait émit un événement ready
. Toute tentative d'utilisation du module avant l'événement ready
déclenchera une erreur.
Méthodes
Le module net
dispose des méthodes suivantes :
net.request(options)
Returns ClientRequest
Creates a ClientRequest
instance using the provided options
which are directly forwarded to the ClientRequest
constructor. La méthode net.request
doit être utilisée pour émettre des requêtes HTTP sécurisés et non sécurisés selon le schéma de protocole spécifié dans l'objet options
.
net.fetch(input[, init])
input
string | GlobalRequestinit
RequestInit & { bypassCustomProtocolHandlers?: boolean } (optional)
Returns Promise<GlobalResponse>
- see Response.
Sends a request, similarly to how fetch()
works in the renderer, using Chrome's network stack. This differs from Node's fetch()
, which uses Node.js's HTTP stack.
Exemple :
async function example () {
const response = await net.fetch('https://my.app')
if (response.ok) {
const body = await response.json()
// ... utilisation du résultat.
}
}
This method will issue requests from the default session. To send a fetch
request from another session, use ses.fetch().
Reportez-vous à la documentation MDN sur fetch()
pour plus de détails .
Limitations:
net.fetch()
ne prend pas en charge les schémasdata:
oublob:
.- La valeur de l'option
integrity
est ignorée. - Les valeurs
.type
et.url
de l'objetResponse
retourné sont incorrectes.
By default, requests made with net.fetch
can be made to custom protocols as well as file:
, and will trigger webRequest handlers if present. When the non-standard bypassCustomProtocolHandlers
option is set in RequestInit, custom protocol handlers will not be called for this request. This allows forwarding an intercepted request to the built-in handler. webRequest handlers will still be triggered when bypassing custom protocols.
protocol.handle('https', (req) => {
if (req.url === 'https://my-app.com') {
return new Response('<body>my app</body>')
} else {
return net.fetch(req, { bypassCustomProtocolHandlers: true })
}
})
Remarque : dans le processus utility les protocoles personnalisés ne sont pas pris en charge.
net.isOnline()
Retourne boolean
- Indique si une connexion Internet existe actuellement.
Une valeur de retour de false
indique que l'utilisateur ne pourra pas se connecter à des sites distants. Cependant, une valeur de retour à true
donne une information incertaine car même si un lien est en ligne, rien n'indique qu'une tentative de connexion à un site distant particulier soit réussie.
net.resolveHost(host, [options])
host
string - Nom d'hôte à résoudre.
Returns Promise<ResolvedHost> - Resolves with the resolved IP addresses for the host
.
This method will resolve hosts from the default session. To resolve a host from another session, use ses.resolveHost().
Propriétés
net.online
Lecture seule
Propriété de type boolean
. Indique s'il y a actuellement une connexion Internet.
Une valeur de retour de false
indique que l'utilisateur ne pourra pas se connecter à des sites distants. Cependant, une valeur de retour à true
donne une information incertaine car même si un lien est en ligne, rien n'indique qu'une tentative de connexion à un site distant particulier soit réussie.