oxid
ist ein auf Observables basierendes isomorphes HTTP-Anfragemodul von RXJ.
Dies hat eine Peer-Abhängigkeit von rxjs@6
, die ebenfalls installiert werden muss
npm install oxid
Oxid exportiert die Standardinstanz oxid
und macht außerdem Oxid
-Klasse verfügbar, um separate Instanzen zu erstellen.
import { oxid, Oxid } from 'oxid';oxid.get('url', options).subscribe();const anotherInstance = new Oxid(customConfigurations);anotherInstance.get('url', options).subscribe();
Alle Schnittstellen von Oxid geben Observable<HttpEvent<T>>
zurück und ermöglichen das Abonnieren von der request
zur http-Methodenfunktion.
type requestMethodType = <T>(url: string, config?: RequestConfig) => Observable<HttpEvent<T>>;type requestMethodWithDataType = <T, U>(url: string, data?: T, config?: RequestConfig) = > Observable<HttpEvent<U>>;class Oxid { public readonly delete: requestMethodType; public readonly get: requestMethodType; öffentlicher schreibgeschützter Kopf: requestMethodType; öffentliche schreibgeschützte Optionen: requestMethodType; öffentlicher schreibgeschützter Beitrag: requestMethodWithDataType; public readonly put: requestMethodWithDataType; öffentlicher schreibgeschützter Patch: requestMethodWithDataType; öffentliche Anfrage<T erweitert Objekt | string = any>(url: string, config?: RequestConfig): Observable<HttpEvent<T>>; öffentliche Anfrage<T erweitert Objekt | string = any>(url: string): Observable<HttpEvent<T>>; öffentliche Anfrage<T erweitert Objekt | string = any>(config: RequestConfig): Observable<HttpEvent<T>>; öffentliche Anfrage<T erweitert Objekt | string = any>(urlOrConfig: RequestConfig | string,config?: RequestConfig ): Observable<HttpEvent<T>> {
Oxid enthält einen Standardsatz an Konfigurationswerten. Dieser Wert wird verwendet, wenn die Anforderungsinstanz oxid
verwendet wird. Beim Erstellen einer neuen Instanz über eine Klasse sind standardmäßig keine Optionswerte enthalten, diese müssen über den Klassenkonstruktor angegeben werden. Dennoch akzeptieren einzelne Methoden ( request()
und rest) RequestConfig
separat, das beim Erstellen der Instanz in Konfigurationen zusammengeführt wird.
Schnittstelle RequestConfigBase { URL?: string; Methode?: Methode; baseURL?: string; transformRequest?: Transformer | Array<Transformer>; transformResponse?: Transformer | Array<Transformer>; Überschriften?: alle; Parameter?: alle; paramsSerializer?: (params: any) => string; Daten?: alle; Adapter?: Adapter; auth?: BasicCredentials; Antworttyp?: Antworttyp; AntwortEncoding?: string; xsrfCookieName?: string; xsrfHeaderName?: string; maxContentLength?: Zahl; validierenStatus?: (status: Zahl) => boolean; maxRedirects?: Zahl; socketPath?: string | null; Proxy?: ProxyConfig;}interface RequestConfigNode erweitert RequestConfigBase { /** * Benutzerdefinierter Agent, der in der HTTP-Anfrage des Knotens verwendet werden soll. */ httpAgent?: any; /** * Benutzerdefinierter Agent, der in der Knoten-https-Anfrage verwendet werden soll. */ httpsAgent?: any; transport?: { request: typeof import('http').request };}interface RequestConfigBrowser erweitert RequestConfigBase { /** * Fortschrittsereignis für xhr-Anfrage ausgeben. */ reportProgress?: boolean; withCredentials?: boolean;}
import {oxid, Oxid, defaultOptions} from 'oxid';oxid.get(url); //wird „defaultOptions“ verwenden oxid.get({url, withCredentials: false}); //wird „defaultOptions“ verwenden, „withCredentials“ überschreiben const another = new Oxid(); //keine Basiskonfigurationconst anotherWithConfig = new oxid({withCredendials: false}) //Basiskonfiguration festlegenanotherWithConfig.get({url, withCredentials: false}) //wird die Konfiguration verwenden, wenn die Instanz erstellt wird, überschreiben Sie „withCredentials“.
Beachten Sie, dass defaultOptions
-Objekt unveränderlich ist. Das Ändern oder Neuzuweisen von Werten in bestehende Standardkonfigurationswerte funktioniert nicht, stattdessen sollte ein neues Konfigurationsobjekt erstellt werden.
Oxid selbst verfügt nicht über einen Mechanismus zum Schreiben von Protokollen. Stattdessen stellt es eine Funktion zur Verfügung, um jeden in der Anwendung verwendeten Logger zu verbinden.
function enableLogger(logger: logFunctionType): void;function enableLogger(logger: Partial<Logger>): void;
Es kann sich entweder um eine einzelne Funktion oder um ein Objekt mit Protokollebenen wie „Debug“, „Info“, „Warnung“ und „Fehler“ handeln. Anmerkungen: enableLogger
ist eine globale Funktion , die sich auf jede Oxid-Instanz auswirkt und nur einmal mit der Protokollausgabe beginnt, nachdem enableLogger
aufgerufen wurde.
import { enableLogger, oxid } from 'oxid';// Protokolle werden nicht ausgegebenoxid.get().subscribe();enableLogger(console.log.bind(console));// jetzt werden interne Protokolle über consoleoxid.get ausgegeben ().abonnieren();
Für Build-/Testcode werden nur wenige NPM-Skripte unterstützt.
build
: Transpiliert Code nach dist
.
build:clean
: Vorhandenen Build bereinigen.
test
: Unit-Test ausführen. Erfordert vor der Testausführung keinen build
.
lint
: Führen Sie Lint über alle Codebasen aus.
Obwohl dieses Modul NICHT offiziell angegliedert ist, basiert es auf viel früherer Technik von axios
und @angular/http
. Möglicherweise bemerken Sie einige ähnliche Logiken, und dies wird erwartet.