federn.js: Eine Anleitung zum schnellen Erstellen eines erholsamen API -Servers
Kernpunkte:
In diesem Artikel werden Sie mit Feathers.js einen erholsamen API -Server in node.js erstellen.
API-Server, auch als Anwendungsserver bezeichnet, ist ein Programm, das Daten an Front-End-Anwendungen bereitstellt. Es verarbeitet auch die Geschäftslogik im Backend und bietet einen eingeschränkten Zugriff auf die Datenbank der Organisation. Es verhindert nicht nur, dass nicht autorisierte Personen auf Daten zugreifen.
Jede Anwendung, die Sie erstellen, muss den Endbenutzer Dienste zur Verfügung stellen. Dazu muss Ihre Anwendung die Daten verarbeiten. Sie können die Remote -API verwenden, um einen neuen Dienst zu erstellen. Für die meisten Anwendungen müssen Sie jedoch Ihren eigenen Datenspeicher verwalten. Eine beliebte Option ist die Verwendung von Online -Datenspeicherdiensten wie Firebase. Auf diese Weise müssen Sie sich nicht mit den mühsamen Details des Ausführens eines verteilten Datenbankservers befassen. Ihre Projektanforderungen erfordern jedoch möglicherweise ein voll ausgestattetes internes Datenbankverwaltungssystem wie MongoDB oder Oracle. Damit Ihre Front-End-Anwendung auf die in der Datenbank gespeicherten Daten zugreifen kann, benötigen Sie eine Serveranwendung zwischen der Datenbank und der Front-End-Anwendung.
Wie im obigen Bild gezeigt, besteht der Auftrag eines Anwendungsservers darin, mithilfe von SQL- oder NoSQL -Befehlen Daten aus einer Datenbank zuzugreifen und sie in ein Format umzuwandeln, das eine Front -End -Anwendung (Client -Browser) verstehen kann - wie z. B. JSON . Darüber hinaus können Anwendungsserver verschiedene Sicherheitsprotokolle verwenden - z. Einer der Hauptvorteile der Verwendung dieser Architektur besteht darin, dass Sie denselben Anwendungsserver verwenden können, um Anwendungen für verschiedene Plattformen bereitzustellen - Desktop, Mobile, Web und mehr. Darüber hinaus ist es auch einfach, Ihre Anwendung horizontal zu skalieren, um Benutzern effizienter Dienste bereitzustellen und schnelle Reaktionszeiten zu erreichen.
Wir erstellen einen einfachen API -Server und demonstrieren die verschiedenen Funktionen, die Federn bieten.
Voraussetzung:
Bevor Sie dieses Tutorial beginnen, müssen Sie eine solide Grundlage zu den folgenden Themen haben:
Federn sind auf Express, einem minimalistischen Web -Framework für node.js. Wenn Sie das im Link gezeigte Tutorial abschließen, finden Sie es sehr mühsam, die erholsame API nur mit Express zu bauen. Bei Federn erfolgt die meisten sich wiederholenden Arbeiten für Sie. Sie müssen sich nur auf das Konfigurieren und Anpassen Ihres Codes konzentrieren. Lassen Sie uns in den Code eintauchen und erfahren, wie dieses Web -Framework funktioniert.
Projekterstellung:
Um Federn zu verwenden, müssen Sie seine Befehlszeilenanwendung global installieren:
npm install -g @feathersjs/cli
Erstellen Sie als nächstes ein neues API -Projekt mit dem folgenden Befehl:
mkdir contacts-api cd contacts-api feathers generate app
Folgendes sind meine Entscheidungen, Sie können jeden Test -Framework auswählen, den Sie mögen. Leider steht der Test nicht im Fokus dieses Artikels, daher wird er hier nicht behandelt. Ich persönlich mag Einfachheit, weshalb ich mich entschieden habe.
Nach Abschluss der Installation können Sie Ihren bevorzugten Code -Editor zum Anzeigen der Projektdatei öffnen.
Wenn Sie das Express -Tutorial abschließen, das ich im Abschnitt Voraussetzungen aufgeführt habe, sollte der generierte Code Sie nicht erschrecken. Hier ist eine kurze Zusammenfassung, die Ordner und Dateien beschreibt.
Machen Sie sich jetzt keine allzu große Sorgen um die Rolle jeder Datei. Wenn Sie dieses Tutorial durchlaufen, erfahren Sie mehr darüber, wie sie funktionieren. Lassen Sie uns nun bestätigen, dass der Test ordnungsgemäß funktioniert.
Code -Stil -Check (LINTING):
Um sicherzustellen, dass unser Projekt den definierten Eslint -Regeln entspricht, führen Sie einfach den Befehl npm test
aus. Wenn Sie eine Unix- oder Linux -Plattform verwenden, sollte dies gut funktionieren. Wenn Sie Windows verwenden, müssen Sie etwas optimieren, um den Test erfolgreich durchzuführen.
Gehen Sie zuerst zu package.json
und anzeigen Sie den Abschnitt scripts
. Ändern Sie die test
Zeile in:
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
Wenn Sie als nächstes schöner in Visual Studio -Code installiert sind, müssen Sie die einzelne Zitateinstellung in der Registerkarte Arbeitsbereicheinstellungen in true ändern:
{ "prettier.singleQuote": true }
Stellen Sie zum Schluss sicher, dass beim Erstellen oder Bearbeiten einer Datei die Newline LF ist. Wenn Sie Visual Studio -Code oder ähnliche Editoren verwenden, können Sie den aktuellen Neuen -Line -Stil in der Statusleiste überprüfen. Wenn CRLF angezeigt wird, wechseln Sie zu LF. Wenn Sie diese Änderungen vornehmen, können Sie den Code -Style -Check -Test bestehen. Leider braucht es mehr Arbeit, um den Test zu bestehen, und wird hier nicht vorgestellt.
Lassen Sie uns sehen, wie die CRUD RESTful -Schnittstelle generiert wird.
Service generieren:
Erstellen einer erholsamen CRUD -API -Schnittstelle in Express erfordert einige Arbeiten. In Federn können Sie Code generieren, indem Sie einfach einen einzelnen Befehl ausführen und einige Fragen beantworten:
npm install -g @feathersjs/cli
In diesem Tutorial werden wir die NEDB -Datenbank verwenden. Feathers unterstützt SQL -Datenbanken (wie MySQL) und NoSQL -Datenbanken (wie MongoDB). Die Installation eines Datenbanksystems - ob auf Ihrem Computer oder auf einem Cloud -Server - benötigt jedoch einige Zeit, um es zu konfigurieren. NEDB hingegen ist eine In-Memory-Datenbank, die vollständig in JavaScript geschrieben wurde und eine Teilmenge der MongoDB-API unterstützt. Es ist keine Konfiguration erforderlich. Es eignet sich perfekt zum Prototyping und zum Testen neuer Anwendungen. Dies ist die Datenbank, die wir in diesem Tutorial verwenden werden.
Schauen wir uns einen kurzen Blick auf einige der mit diesem Befehl generierten Dateien an:
services/contacts/contact.service.js
. Dies ist ein Federn -Service, der CRUD -API -Endpunkte für /contacts
bietet. Sehr klein, nicht wahr? Dies liegt daran, dass Federn das schwere Heben für uns getan haben. Es speichert uns vor dem Schreiben von Boilerplate -CRUD -Code. services/contacts/contact.hooks.js
. Hier passen wir das Verhalten der CRUD -Logik an. Wir haben den Abschnitt before
, in dem wir die Daten überprüfen oder ändern können, bevor die Federn die Datenbank lesen oder schreiben. Wir haben auch einen Abschnitt after
, in dem wir die Ergebnisse in der Datenbank überprüfen oder ändern können, bevor wir sie an die Client -Anwendung senden. Wir können Vorgänge wie die Einschränkung des Zugriffs, die Datenüberprüfung, die Durchführung von Join -Operationen und die Berechnung der Werte zusätzlicher Felder oder Spalten ausführen. models/contacts.model.js
. Hier definieren wir ein Modell und fügen es an die Datenbanktabelle hinzu. Hier definieren wir auch ein Muster, das verwendet werden kann, um Felder zu überprüfen, wenn ein neuer Datensatz eingefügt oder aktualisiert wird. Leider unterstützt NEDB den Modus nicht. Ich habe jedoch ein Beispiel für ein mit MongoDB verbundener Modell geliefert, das die Modusfunktionalität über den Mongoose -Adapter unterstützt: mkdir contacts-api cd contacts-api feathers generate app
Trotz einiger Einschränkungen bei NEDB ist es immer noch eine sehr geeignete Datenbank für das Prototyping. In den meisten NOSQL -Datenbanken können Sie Daten mit einer Struktur mithilfe einer Struktur einreichen, ohne zuerst das Schema zu definieren. Es ist am besten, das Modell nach der Implementierung der Projektanforderungen zu implementieren. Mit dem Muster führen Federn die Feldvalidierung für Sie mithilfe der von Ihnen definierten Regeln durch. Sie benötigen eine produktionsbereite Datenbank (z. B. MongoDB), um das Schema zu definieren. Bitte beachten Sie, dass die Konfigurationsdefinition der Entwicklungsdatenbank in config/default.json
:
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
Hier werden die Datenbankanmeldeinformationen bereitgestellt. Wir haben eine andere Konfigurationsdatei config/production.json
. Dies ist die Produktionsdatenbankkonfiguration, die bei der Bereitstellung der Federn -Anwendung verwendet wird. Es ist wichtig, eine separate Datenbank während der Entwicklung zu verwenden. Andernfalls besteht das Gefahr, dass Sie geschäftliche Betriebsdaten in Ihrer Produktionsdatenbank löschen oder beschädigen.
Jetzt, da wir den CRUD -Service des Kontakts eingerichtet haben, ist es Zeit, ihn zu versuchen. Sie können den Federserver mit dem Befehl npm start
starten. Bitte beachten Sie, dass dieser Server das Hot Reload nicht unterstützt. Daher muss es jedes Mal neu gestartet werden, wenn Sie den Code ändern. Um mit unserer Federn -Anwendung zu interagieren, benötigen wir ein API -Browser -Tool wie Postman oder Schlaflosigkeit. In diesem Tutorial werde ich Schlaflosigkeit verwenden, aber Sie können es einfach mit Postboten oder einem anderen Tool tun.
Erstellen Sie eine neue GET -Anforderung (drücken Sie Strg n ) und nennen Sie es "List -Kontakte". Geben Sie im URL -Abschnitt http://localhost:3030/contacts
ein. Wenn Sie auf die Schaltfläche "Senden" klicken, sollten Sie die folgende Ansicht sehen:
Nichts! Unsere Datenbank ist derzeit leer, daher müssen wir einige neue Kontakte erstellen. Erstellen Sie eine neue Anfrage namens Create Contact. Füllen Sie die verbleibenden Felder wie folgt aus:
Wenn Sie vergessen, die Methode in der obigen Form zu veröffentlichen, können Sie sie später ändern. Ändern Sie die Methode, um die Registerkarte "Körper" in JSON zu veröffentlichen. Kopieren Sie die folgenden Daten in die Registerkarte JSON:
npm install -g @feathersjs/cli
Wenn Sie auf die Schaltfläche "Senden" klicken, sollten Sie die folgende Antwort erhalten. Bitte beachten Sie, dass ein _id
für Ihren neuen Kontakt generiert wurde.
kehren Sie zu "Listenkontakte" zurück und klicken Sie erneut auf die Schaltfläche "Senden". Sie sollten die folgenden Ergebnisse erhalten:
mkdir contacts-api cd contacts-api feathers generate app
kehren Sie zum "Kontakt erstellen" zurück und veröffentlichen Sie mehrere neue Datensätze:
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
{ "prettier.singleQuote": true }
Lassen Sie uns jetzt den Aktualisierungsvorgang durchführen. Zu diesem Zweck werden wir die Aktualisierungs -HTTP -Methode nicht verwenden. Diese Methode überschreibt den Datensatz vollständig. Alles, was wir tun wollen, ist, ein einzelnes Feld zu überschreiben, nicht den gesamten Datensatz. Dazu werden wir Patch verwenden. Erstellen Sie eine neue Anfrage "Kontakt aktualisieren", wie unten gezeigt:
Geben Sie im Feld URL http://localhost:3030/contacts/{_id}
ein. Ersetzen Sie {_id}
durch die ID des ersten Datensatzes. Fügen Sie die folgenden Daten in die Registerkarte JSON ein:
feathers generate service
Klicken Sie auf die Schaltfläche "Senden". Sie sollten die folgenden Ergebnisse sehen:
Bitte beachten Sie, dass die verbleibenden Felder unverändert bleiben. Als nächstes werden wir einen Datensatz löschen. Es ist einfach. Erstellen Sie einfach eine neue Anforderung und nennen Sie sie "Kontakt löschen". Verwenden Sie im URL -Feld das Format http://localhost:3030/contacts/{_id}
. Ersetzen Sie {_id}
genau wie zuvor die ID des Datensatzes, den Sie löschen möchten. Wenn Sie auf "Senden" klicken, löschen Sie den Datensatz für Sie. Sie können bestätigen, indem Sie die Anfrage der Liste Kontakte erneut ausführen.
Wir haben nur überprüft, ob alle CRUD -Operationen ordnungsgemäß ausgeführt werden. Im nächsten Abschnitt lernen wir, wie man Authentifizierung einrichtet.
(Der folgende Inhalt ähnelt dem Originaltext, einige Anweisungen und Absätze wurden jedoch vorgenommen, um die Lesbarkeit und Fließfähigkeit zu verbessern und die ursprüngliche Absicht unverändert zu halten. Das Bildformat bleibt unverändert.)
Authentifizierung:
Derzeit sind unsere /contacts
-Pi -Endpunkte nicht geschützt. Wenn wir die Anwendung auf einem Cloud -Server bereitstellen, kann jeder mit der URL auf unsere Datensätze zugreifen und sie bedienen. Um den Zugriff einzuschränken, müssen wir die Authentifizierung einrichten. Wir werden JSON -Web -Token verwenden, um die Authentifizierung für unsere API -Anwendungen zu implementieren. Führen Sie den folgenden Befehl aus, um es festzulegen:
npm install -g @feathersjs/cli
Wie Sie sehen, unterstützt Federn verschiedene Methoden der Benutzerauthentifizierung. Die Option "lokaler Benutzername -Passwort" ist am einfachsten festgelegt.
Wählen Sie die folgenden Optionen aus:
Als nächstes müssen wir einen neuen Benutzer erstellen. Wir können dies mit Schlaflosigkeit oder einem anderen API -Browser -Tool tun. Erstellen Sie eine neue Anfrage und nennen Sie es "Benutzer erstellen".
Senden Sie in der Registerkarte JSON die folgenden Daten:
mkdir contacts-api cd contacts-api feathers generate app
Sie sollten eine Antwort erhalten, die Folgendes ähnelt:
Wir haben jetzt einen Benutzer. Lassen Sie uns dies bestätigen, indem Sie eine neue Anfrage "Listenbenutzer" erstellen und die URL http://localhost:3030/users
senden. Leider erhalten Sie die folgende Antwort:
Wir müssen uns authentifizieren, um auf diese Daten zuzugreifen. Da wir keine Front-End-Anwendung haben, mit der wir uns anmelden können, werden wir den API-Browser weiterhin verwenden. Erstellen Sie eine neue Anfrage und nennen Sie sie "Get JWT Token". Füllen Sie das Formular wie folgt aus:
Diese Anforderung verwendet die Post -Methode. Für mehr Klarheit können Sie es in "Login" umbenennen. Kopieren Sie auf der Registerkarte JSON die folgenden Daten:
"scripts": { "test": "npm run eslint && SET NODE_ENV= npm run jest", },
Nach dem Klicken auf die Schaltfläche Senden sollten Sie die folgende Antwort erhalten:
kopieren Sie den Token -Code (ohne Doppelzitate). Gehen Sie zur Seite "List -Benutzeranforderung", wählen Sie die Registerkarte Auth und wählen Sie Träger. Fügen Sie diesen Token -Code in das Token -Feld ein.
Nachdem Sie auf die Schaltfläche "Senden" geklickt haben, sollten Sie die Benutzerliste sehen. Bitte beachten Sie, dass unser Authentifizierungssystem nicht vollständig sicher ist. Jeder mit einem /users
-REL -Endpunkt kann ein neues Konto erstellen und auf unser System zugreifen. Um die nicht autorisierte Erstellung neuer Konten zu verhindern, müssen wir diesen Endpunkt auch einschränken. Öffnen Sie die Datei services/users/users.hooks.js
und aktualisieren Sie den folgenden Code -Snippet:
Dies stellt sicher, dass nur authentifizierte Benutzer neue Konten erstellen können. Der nächste Schritt besteht darin, den Endpunkt /contacts
zu schützen. Öffnen Sie einfach die Datei services/contacts/contacts.hooks.js
und aktualisieren Sie entsprechend:
starten Sie den Federn -Server neu, damit Codeänderungen wirksam werden. Wenn Sie versuchen, die Anfrage von Listenkontakten auszuführen, erhalten Sie die folgende Antwort:
Um sich zu authentifizieren, müssen Sie den Trägertoken wie zuvor einrichten. Sobald Sie dies getan haben, können Sie eine Anfrage senden und sollten Ihre Kontaktliste erhalten. Bitte beachten Sie, dass das Token, das Sie zuvor erhalten haben, an einem Tag verfallen wird. Für die Effizienz ist es am besten, Umgebungsvariablen zu verwenden, um die Aktualisierung aller API -Anforderungsparameter gleichzeitig zu erleichtern. Beim Erstellen einer Front-End-Anwendung müssen Sie dieses Token im lokalen Speicher speichern. Verwenden Sie keine Cookies. Andernfalls ist Ihre Bewerbung anfällig für CSRF -Angriffe. Schauen Sie sich die Sicherheitsdokumentation der Feathers für andere Sicherheitsrisiken an, die Sie kennen sollten.
Jetzt, da Sie die Authentifizierung eingerichtet haben, erhalten Sie alle neuen Dienste, die später erstellt wurden, die Möglichkeit, neue Endpunkte zu schützen. Schauen wir uns das letzte Thema dieses Tutorials im nächsten Abschnitt an.
Haken:
Hook ist eine Middleware -Funktion, die zuvor, nach oder wenn ein Fehler auftritt. Sie werden häufig verwendet, um Protokollierung zu behandeln, Zugriff zu beschränken, Felder zu schützen, verwandte Unternehmen zu füllen, Benachrichtigungen zu senden und vieles mehr. Wenn Sie sich services/users/users.hooks.js
ansehen, können Sie einige eingebaute Federn-Haken verwenden. Wir werden unsere eigenen benutzerdefinierten Haken erstellen. Stoppen Sie zunächst den Server und löschen Sie die Tabelle data/contacts.db
Datenbank. Verwenden Sie als nächstes den folgenden Befehl, um einen neuen Haken zu generieren:
npm install -g @feathersjs/cli
Erstellen Sie benutzerdefinierte Hooks mit den folgenden Optionen process-contact
:
Was wir in diesem Haken tun möchten, ist, zwei neue Felder vor dem Verarbeiten der Anforderung "Kontakt erstellen" zu injizieren.
createdBy
: Link zum derzeit angemeldeten Benutzer über _id
createdOn
hooks/process-contact.js
populate-user
hooks/populate-user
: Fügen Sie Erstellungsdatum hinzu Öffnen Sie die Datei und aktualisieren Sie die Datei wie folgt: Erstellen Sie als nächstes einen weiteren Hook , mit dem das Benutzerobjekt auf Anfrage an den Kontaktdatensatz angeschlossen wird. Befolgen Sie die Anweisungen im folgenden Screenshot: Öffnen Sie die Datei und fügen Sie den folgenden Code ein: Jetzt können Sie den Server starten. Verwenden Sie die Kontaktanforderung erstellen, um drei Kontakte erneut zu erstellen. Wenn Sie kein Trägertoken eingerichtet haben, stellen Sie ihn fest. Andernfalls erhalten Sie einen Autorisierungsfehler. Dies ist die Art der Antwort, die Sie beim Erstellen eines neuen Kontakts erhalten sollten: Zusammenfassung:
Ich hoffe, Sie haben jetzt gelernt, wie Sie schnell Ihren eigenen API -Server erstellen können. Wir haben nur die Grundlagen angesprochen und Sie sollten den vollständigen Leitfaden lesen, um weitere Funktionen zu finden, die Federn bieten können, mit denen Sie mit minimalem Aufwand erweiterte Funktionen erzielen können. Sie sollten auch die Awesome Federn -Seite ansehen, die viele Ressourcen enthält. Unabhängig davon, ob Sie Plugins, Projektbeispiele oder Tutorials benötigen, finden Sie den Link dort möglicherweise. Sie sollten auch die Federn-Plus-CLI überprüfen, eine verbesserte Version von Federn. Darüber hinaus werden neue Funktionen hinzugefügt, die die Federn CLI bereits bereitgestellt hat, z. B. Code für die Aussaat und GraphQL -Unterstützung.
Wenn Sie das contacts-api
-Projekt weiter verbessern möchten, empfehle ich Ihnen, eine neue Front-End-Anwendung mit dem Framework Ihrer Wahl zu erstellen. Erstellen Sie Anmeldebildschirme und CRUD -Seiten für /contacts
und /users
Endpunkte. Genießen Sie den Spaß der Umsetzung der Herausforderungen.
Häufig gestellte Fragen zu Federn.js:
Was ist federn.js? federn.js ist ein Web-Framework zum Erstellen von Echtzeitanwendungen. Es wurde so konzipiert, dass es leicht, flexibel und einfach zu bedienen ist. Es bietet eine Reihe von Werkzeugen und Mustern zum Erstellen skalierbarer und wartbarer serverseitiger Anwendungen.
Welche Programmiersprachen werden von federn.js unterstützt? federn.js verwendet hauptsächlich JavaScript auf der Server- und Client -Seite. Es kann mit node.js auf dem Server verwendet werden und unterstützt verschiedene JavaScript -Frameworks im Client, einschließlich Frameworks wie React, Angular und Vue.js.
Was sind die Schlüsselmerkmale von federn.js? federn.js enthält Echtzeit-Funktionen (über WebSocket und Rastful API), serviceorientierte Architektur, Unterstützung für verschiedene Datenbanken (MongoDB, PostgreSQL usw.), Authentifizierungs- und Autorisierungsmechanismen und Plug-in-Systeme für Erweiterungen.
Wie gehen Feathers.js mit Echtzeit-Kommunikation um? federn.js verwendet die Funktionen von Websockets, um eine Echtzeitkommunikation zu erreichen. Es bietet eine Echtzeit-API von der Box, mit der Clients Echtzeit-Updates empfangen können, wenn Daten auf dem Server ändert.
Kann ich Feathers.js für das Server-Side-Rendering (SSR) verwenden? Obwohl Feathers.js hauptsächlich zum Erstellen von APIs und Echtzeitanwendungen verwendet wird, kann es in Verbindung mit anderen Frameworks wie Next.js oder nuxt.js verwendet werden, um die serverseitige Rendering (SSR) von Webanwendungen zu implementieren.
Alle Bildlinks behalten das Originalformat.
Das obige ist der detaillierte Inhalt vonEin Anfängerleitfaden zu federn.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!