Klasse: ClientRequest
Klasse: ClientRequest
Tätigen von HTTP/HTTPS anfragen.
Prozess: Main, Utility
Diese Klasse wird nicht aus dem 'electron'-Modul exportiert. Es ist nur als Rückgabewert anderer Methoden in der Electron-API verfügbar.
ClientRequest implementiert die Writable Stream-Schnittstelle und ist somit ein EventEmitter.
new ClientRequest(options)
options Eigenschaften wie zum Beispiel protocol, host, hostname, port und path, folgen strikt dem Node.js Modell, wie im URL Modul beschrieben.
Zum Beispiel hätten wir die gleiche Anfrage an "github.com" wie folgt erstellen können:
const request = net.request({
method: 'GET',
protocol: 'https:',
hostname: 'github.com',
port: 443,
path: '/'
})
Instanz-Ereignisse
Event: 'response'
Kehrt zurück:
responseIncomingMessage - An object representing the HTTP response message.
Event: 'login'
Kehrt zurück:
authInfoObjektisProxybooleanschemestringhoststringportIntegerrealmstring
callbackFunctionusernamestring (optional)passwordstring (optional)
Ausgegeben, wenn ein Authentifizierung Proxy die Benutzeranmeldeinformationen anfragt.
Die callback Funktion erwartet mit den Benutzerdaten aufgerufen zu werden:
usernamestringpasswordstring
request.on('login', (authInfo, callback) => {
callback('username', 'password')
})
Das nicht Angeben von Anmeldeinformationen wird die Anfrage abbrechen und dem Response-Objekt einen Authentifizierungsfehler melden:
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()
})
Event: 'finish'
Ausgesendet, direkt nachdem der letzte Block der request Daten in das request Objekt geschrieben worden sind.
Event: 'abort'
Emitted when the request is aborted. The abort event will not be fired if the request is already closed.
Event: 'error'
Kehrt zurück:
errorError - Ein Error Objekt, welches Informationen über den Fehler enthält.
Ausgegeben, wenn das net Modul es nicht schaft eine Netzwerkanfrage zu senden. In der Regel wenn das request Objekt ein error Event auslöst, folgt ein close Event und es wird kein response Objekt zur Verfügung gestellt.
Event: 'close'
Ausgelöst als letztes Event in der HTTP request-response Interaktion. Das close Event gibt an, dass keine weiteren Events mehr auf die request oder response Objekte ausgelöst werden.
Event: 'redirect'
Kehrt zurück:
statusCodeIntegermethodstringredirectUrlstringresponseHeadersRecord<string, string[]>
Emitted when the server returns a redirect response (e.g. 301 Moved Permanently). Calling request.followRedirect will continue with the redirection. If this event is handled, request.followRedirect must be called synchronously, otherwise the request will be cancelled.
Instanz Eigenschaften
request.chunkedEncoding
Ein boolean gibt an, ob die HTTP Anfrage eine segmentierte Übertragungscodierung nutzt oder nicht. Der Standardwert ist false. Die Eigenschaft ist lesbar und beschreibbar, jedoch kann dies nur eingestellt werden, bevor der ersten Schreib-Operation, da die HTTP headers noch nicht abgeschickt worden sind. Der Versuch die chunkedEncoding Eigenschaft nach der ersten Übertragung zu ändern, wird einen Fehler verursachen.
Das Benutzen von segmentierter Codierung wird dringend empfohlen, wenn du einen großen request body senden möchtest, da die Daten in kleinen Stücken gestreamt wird, anstatt das diese intern im Electron Prozess Speicher gebufferd werden.
Beispiel Methoden
request.setHeader(name, value)
namestring - Ein extra HTTP header Name.valuestring - An extra HTTP header value.
Fügt einen extra HTTP header hinzu. The header name will be issued as-is without lowercasing. Es kann nur vor dem ersten Schreiben aufgerufen werden. Das Aufrufen der Methode nachdem das erste Schreiben erfolgte, wird einen Fehler erzeugen. Falls der übergebene wert kein string ist, wird die toString() Methode aufgerufen, um den Finalen wert zu erhalten.
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-LengthHostTraileroderTeUpgradeCookie2Keep-AliveTransfer-Encoding
Additionally, setting the Connection header to the value upgrade is also disallowed.
request.getHeader(name)
namestring - Spezifiziert einen extra Header Namen.
Gibt ein string wieder - Den wert des davor gesetzten extra Header Namen.
request.removeHeader(name)
namestring - Spezifiziert einen extra Header Namen.
Removes a previously set extra header name. This method can be called only before first write. Trying to call it after the first write will throw an error.
request.write(chunk[, encoding][, callback])
chunk(string | Buffer) - A chunk of the request body's data. If it is a string, it is converted into a Buffer using the specified encoding.encodingstring (optional) - Used to convert string chunks into Buffer objects. Defaults to 'utf-8'.callbackFunction (optional) - Wird aufgerufen, nachdem der Schreibvorgang beendet ist.
callback ist im Wesentlichen eine dummy-Funktion die dem Zweck dient, Ähnlichkeiten mit der Node.js API beizubehalten. Es wird in den nächsten Tick asynchron aufgerufen, nachdem der chunk Inhalt auf der Chromium Netzwerkebene geliefert worden ist. Im Gegensatz zu der Node.js Implementierung, ist es nicht Garantiert das der chunk Inhalt hochgeladen worden ist, vor dem Aufrufen von callback.
Fügt einen Teil der Daten zum request body. Der erste Schreiboperation könnte das hochladen des request headers einleiten. Nach der ersten Schreiboperation, ist es nicht mehr erlaubt, Benutzerdefinierte Header hinzuzufügen oder zu entfernen.
request.end([chunk][, encoding][, callback])
chunk(string | Buffer) (optional)encodingstring (optional)callbackFunktion (optional)
Gibt das this zurück.
Sends the last chunk of the request data. Subsequent write or end operations will not be allowed. The finish event is emitted just after the end operation.
request.abort()
Bricht die laufende HTTP-Interaktion ab. Falls die Anfrage bereits das close Event ausgegeben hat, hat der Abbruch-Aktion keinen Effekt. Ansonsten wird ein laufendes Event abort und close Events ausgeben. Zusätzlich, falls es ein laufendes response-Objekt gibt, wir dieses ein aborted Event ausgeben.
request.followRedirect()
Continues any pending redirection. Can only be called during a 'redirect' event.
request.getUploadProgress()
Gibt das Object zurück:
activeboolean - Whether the request is currently active. If this is false no other properties will be setstartedboolean - Whether the upload has started. If this is false bothcurrentandtotalwill be set to 0.currentInteger - Die Anzahl der bereits hochgeladenen BytestotalInteger - Die Anzahl der Bytes, die für diese Anforderung hochgeladen werden
Sie können diese Methode in Verbindung mit POST-Anfragen verwenden, um den Fortschritt von einem Datei-Upload oder einer anderen Datenübertragung abzurufen.