Heim >Web-Frontend >js-Tutorial >Grundlegende CRUD-API mit Express

Grundlegende CRUD-API mit Express

Linda Hamilton
Linda HamiltonOriginal
2025-01-04 22:38:43449Durchsuche

Inhalt

  • Einführung
  • Projekterstellung und -initialisierung
  • Erstellen Sie einen einfachen Server und eine GET-Route
  • Routen und Anforderungshandler
  • Anfrage und Antwort
  • Achten Sie auf Änderungen
  • Erstellen Sie POST-, GET-, UPDATE- und DELETE-Routen
  • API-Clients
  • Anforderungstext, Parameter, Abfrage, Header, ...
  • Speicherdaten manipulieren
  • Fazit

Einführung

Basic CRUD API with express

JavaScript Essentials: Teil 7

Michael Otu ・ 2. November '24

#javascript #api #Anfänger #Knoten

Basic CRUD API with express

Was ist eine API?

Michael Otu ・ 24.02.24

#javascript #Typoskript #Knoten #api

Basic CRUD API with express

Was ist die REST-API?

Michael Otu ・ 1. März '24

#javascript #Typoskript #Knoten #api

Basic CRUD API with express

JavaScript Essentials: Teil 6 (Mastermind in Javascript)

Michael Otu ・ 28. Okt. 24

#javascript #Anfänger #api #Knoten

Basic CRUD API with express

Was ist Nodejs?

Michael Otu ・ 31. Juli '24

#javascript #Typoskript #Knoten #api

Basic CRUD API with express

Anfrage und Antwort

Michael Otu ・ 14. März 2024

#javascript #Knoten #Programmierung #tutorial

Basic CRUD API with express

Was ist JSON?

Michael Otu ・ 9. März 2024

#javascript #Typoskript #Knoten #api

In JavaScript Essentials: Teil 7 habe ich angedeutet, dass wir uns mit der Entwicklung von APIs befassen würden ([0] [1]), und hier fangen wir an. Wir werden einen Vorgeschmack darauf bekommen, was nötig ist, um eine einfache API zur Verfolgung von Ausgaben zu entwickeln.

Projektbeschreibung

Für diesen Spesen-Tracker müssen wir den gekauften Artikel, den Betrag und das Kaufdatum des Artikels im Auge behalten. Eine Ausgabe sieht folgendermaßen aus:

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

Da zu diesem Zeitpunkt noch keine echte Datenbank hinzugefügt wurde, können wir eine Liste (ein Array) verwenden, um die Daten zu speichern, die wir erstellen werden. In diesem Auszug gehen wir alle wichtigen Konzepte rund um die Erstellung von APIs durch und fügen später einige Möglichkeiten zur Verbesserung dieser App hinzu.

Wissen Sie, dass wir auf diesem Projekt aufbauen werden, also halten Sie es sauber und erkunden Sie, experimentieren Sie, tasten Sie herum usw., so viel Sie können.

Projekterstellung und -initialisierung

Wie üblich benötigen wir für jedes Projekt eine neue Arbeitsumgebung, daher beginnen wir mit der Erstellung und Initialisierung eines Node JS-Projekts. Wenn Sie sich nicht sicher sind, schauen Sie sich JavaScript Essentials: Teil 6 (Mastermind in Javascript) an.

Jetzt müssen wir den übergeordneten Ordner für unsere API erstellen, indem wir Folgendes tun:

# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js

Alles, was wir mit diesem Skript machen, ist ziemlich direkt.

  • Wir erstellen einen Ordner für unser Projekt
  • Wir haben den Ordner in vscode geöffnet
  • Wir haben ein NodeJS-Projekt initialisiert
  • Wir haben ein Konsolenprotokoll zur Datei index.js hinzugefügt. Dadurch wird die Datei erstellt und einige Inhalte hinzugefügt
  • Wir führen die Datei index.js aus

Eine Alternative besteht darin, dorthin zu gehen, wo Sie diesen Ordner erstellen möchten, ihn dort zu erstellen und dann den Ordner in vscode zu öffnen und das Node-Projekt zu initieren – schauen Sie sich JavaScript Essentials: Teil 6 (Mastermind in Javascript) an.

Zu diesem Zeitpunkt müssen wir ein NodeJS-Paket namens Express installieren. Express ist eine Bibliothek, die uns bei der Erstellung unserer APIs hilft.

Wir können dieses Paket installieren, indem wir „npm i express“ ausführen. Dadurch sollte die Datei „package.json“ geändert und die Datei „package-lock.json“ und der Ordner „node_modules“ erstellt werden. Weitere Informationen und Informationen zur Verwendung von npm zum Installieren von Paketen finden Sie im Auszug „Was ist Nodejs“.

Erstellen Sie einen einfachen Server und eine GET-Route

In unserer index.js-Datei können wir diesen Code hinzufügen.

console.log("expense-tracker-simple-api");

// import the express lib
const express = require("express");

// create an express application
const app = express();

// create a GET request on the base endpoint
app.get("/", (req, res) => res.send("Hello world"));

// create a server that listens to requests on port 3000
app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Alles, was wir getan haben, war, eine Express-Anwendung zu erstellen, mit der Anwendung eine GET-Anfrage zum Senden einer Nachricht zu erstellen und die Anwendung Anfragen von Port 3000 abhören zu lassen.

const app = express();

Erstellt eine Express-Bewerbung (? So erstellen Sie eine Express-Bewerbung)

app.get("/", (req, res) => res.send("Hello world"));

Wir haben die Express-Anwendungsinstanz verwendet, um eine GET-Anfrage zu erstellen. app verfügt über mehrere Methoden und Eigenschaften, zu denen auch die HTTP-Methoden gehören. Sehen Sie sich hier die Ausnahmen zu http-Methoden an.

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

Wir haben die Express-Anwendung verwendet, um einen Port abzuhören, und eine Pfeilfunktion verwendet, um uns und den Entwicklern mitzuteilen, dass unsere Anwendung ausgeführt wird. Den Port können wir in einen anderen Port unserer Wahl ändern. Einige spezielle Ports sind jedoch bereits für eine bestimmte Aufgabe gedacht oder werden verwendet, sind in der Community bekannt und dienen als Standardserver, wenn solche Anwendungen oder Programme auf unserem PC ausgeführt werden. Schauen Sie sich diese an – 0 1 2

Hinweis: Es gibt einige, die nicht funktionieren, weil Ihr System sie mitbringt, und andere, die mit von uns installierten Anwendungen geliefert werden, wie zum Beispiel einige Server und Datenbanken und andere. Machen Sie sich keine Sorgen, wenn wir einen Port verwenden, der bereits verwendet wird, werden wir von unserer Anwendung darüber informiert. Alles, was wir tun müssen, ist eins zu addieren oder eins zu subtrahieren. Kein Schweiß.

Routen und Anforderungshandler

Um eine GET-Anfrage zu erstellen, verwenden Sie app.get(...), für POST verwenden Sie app.post(...) und so weiter. Für jede Route, die wir erstellen möchten, nimmt app.SomeMethod(...) eine Route oder einen Pfad und gibt an, welche Ressource der Benutzer-Client wünscht oder welche Aktion er ausführen möchte. Als Teil der Route kann mindestens ein Request-Handler verwendet werden. Das bedeutet, dass wir app.SomeMethod(path, hanlder1, handler2, ..., handlern); haben können.

Für die obige GET-Anfrage ist der Pfad oder die Route / (eine Zeichenfolge) und der einzelne Anforderungshandler, den wir haben, ist (req, res) => res.send("Hello world"), eine Handlerfunktion (ein Rückruf oder eine einfache Pfeilfunktion). Die Anforderungshandler können Middleware und Controller sein.

Anfrage und Antwort

Ein Anforderungshandler akzeptiert normalerweise zwei Argumente, die Anforderung und die Antwort, die als req bzw. res abgekürzt werden (Sie müssen sie nicht so nennen, aber das erste ist immer Anforderung und das zweite ist die Antwort). Die Anfrage enthält die Daten (oder einige Informationen) darüber, wer die Anfrage gestellt hat und was sie wollen. Die Antwort ist ein Mittel, um dem Benutzer, der die Anfrage gestellt hat, Feedback zu geben. In diesem Fall senden wir „Hallo Welt“, wenn der Client eine GET-Anfrage an den /-Pfad stellt.

Hier fällt auf, dass Client und Benutzer austauschbar sind, d. h. welches Gerät die HTTP-Anfrage an unseren API-Server stellt und nicht ein Benutzer, wie bei einem Benutzerkonto.

Normalerweise akzeptiert der Anforderungshandler ein drittes Argument, das auf den nächsten Handler verweist, nachdem der vorherige Handler seine Aufgabe erledigt hat. Das nennen wir als nächstes. Es sieht mehr oder weniger so aus:

# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js

Das nächste Argument ist nützlich, es zeigt auf den Request-Handler und akzeptiert manchmal ein Argument, einen Fehler. Wir werden einen Fehlerhandler implementieren, um im Allgemeinen Fehler zu behandeln, die wir nicht behandelt haben, oder Fehler, die wir an den nächsten Anforderungshandler „übergeben“.

Jetzt brechen wir den laufenden NodeJS-Prozess ab, der (im Terminal) ausgeführt wurde, indem wir die Steuerung c verwenden. Führen Sie es dann erneut aus. Diesmal sollten wir mit dem aktualisierten Inhalt aus dem Abschnitt Einfachen Server und eine GET-Route erstellen eine Ausgabe in der Konsole (Terminal) sehen, die etwa so aussieht:

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

Öffnen Sie http://localhost:3000 im Browser. Was siehst du? Ein Text mit der Aufschrift Hallo Welt ?

Achten Sie auf Änderungen

Rom wurde nicht an einem Tag erbaut, wie das Sprichwort sagt. Gleiches gilt für die Softwareentwicklung. Vielleicht meinen wir damit, dass wir im Laufe der Entwicklung nach und nach weitere Funktionen hinzufügen werden und es in diesem kontinuierlichen Prozess irritierend wird, den Server ständig zu starten und zu stoppen.

Fahren Sie fort und fügen Sie eine weitere GET-Anfrage (Route) mit dem /hello-Pfad und einem Anfragehandler hinzu, der etwas sagt, was Sie sagen möchten. Sei glücklich.

Sie müssten den Server (den laufenden NodeJS-Prozess) neu starten und http://localhost:3000/hello im Browser aufrufen, um die Antwort von diesem Endpunkt zu sehen.

Dies,GET http://localhost:3000/hello, ist ein Endpunkt. Sie teilen dies mit API-Konsumenten. Unter uns sagen wir Route, weil wir nicht die gesamte URL kennen müssen (einschließlich Protokoll – http, Domain – localhost, Port – 3000, und Pfad - /hello). Route ist mehr oder weniger METHODENPFAD, GET /hello.

Unter macOS oder Windows können wir node --watch index.js ausführen oder mit node --watch-path=./ index nach Änderungen nicht nur in unserer Eintragsdatei, sondern im gesamten Ordnerpfad suchen. js, um auf Änderungen im Dateipfad und auch in der Datei selbst zu achten.

Derzeit ist dies der Inhalt meiner package.json-Datei:

# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js

Wir können im Abschnitt „Skript“ ein Skript namens „dev“ hinzufügen.

console.log("expense-tracker-simple-api");

// import the express lib
const express = require("express");

// create an express application
const app = express();

// create a GET request on the base endpoint
app.get("/", (req, res) => res.send("Hello world"));

// create a server that listens to requests on port 3000
app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Wir können den laufenden Server mit Control C stoppen und nun npm run dev ausführen. Dadurch werden gespeicherte Änderungen in unseren Dateien überwacht und der Server neu geladen.

Wenn das also bei Ihnen nicht funktioniert, haben wir eine Alternative. Wir werden Nodemone, NPM und Nodemon -g installieren. Wir würden es überall als Hilfsprogramm verwenden, damit wir es nicht als Teil unserer Pakete installieren müssen. Wir können Änderungen beobachten, indem wir „nodemon index.js“ ausführen. Es gibt Fälle, in denen dies nicht funktioniert, und wenn nicht, dom nodemon --exec node index.js

Wir können unser Entwicklungsskript so ändern, dass es nodemon verwendet,

const app = express();

An diesem Punkt können Sie Ihre .js-Dateien frei ändern und beim Speichern wird der Server neu gestartet, um die angewendeten Laständerungen neu zu laden.

Erstellen Sie POST-, GET-, UPDATE- und DELETE-Routen

Wir haben bereits eine GET-Anfrage erstellt. In diesem Abschnitt werden wir uns kurz mit der Bedeutung der einzelnen Methoden befassen, da wir sie in „Anfrage und Antwort“ ausführlich besprochen haben.

In dieser Anwendung stellen wir unseren Kunden nur eine Art von Ressource zur Verfügung, und zwar Ausgaben. Angenommen, wir bedienen mehrere Ressourcen, dann würden wir Anfragen unter jeder Ressource gruppieren.

Angenommen, wir haben Benutzer und Ausgaben, wir haben GET, POST, PUT, DELETE usw. sowohl für Benutzer als auch für Ausgaben.

Im Moment würden wir die Route /expenditures verwenden, um die Ausgabenressource darzustellen.

  • GET: Dies bedeutet, dass wir eine Route erstellen, um die Aufzeichnungen, die wir über Ausgaben haben, aufzulisten, alle abzurufen, alle abzurufen usw. Wir können eine GET-Anfrage haben, die einen der Datensätze abruft. Wir haben ein ähnliches GET

  • erstellt
  • POST: Die Post-Methode wird häufig zum Erstellen von Ressourcen verwendet

  • PUT: Die Put-Methode wird zum Aktualisieren von Ressourcen verwendet

  • DELETE: Die Löschmethode wird zum Löschen einer Ressource verwendet

Jetzt können wir die folgenden Codezeilen zur Datei index.js hinzufügen, jedoch über app.listen(3000,...).

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

Bemerken Sie beim Speichern Ihrer Datei die Protokolle im Terminal? Testen Sie die GET-Route für die Ausgabe im Browser.

Wir können die GET-Anfragen nur im Browser ausführen. Als nächstes werden wir API-Clients besprechen.

API-Clients

Ein API-Client ist in diesem Zusammenhang ein Tool, ein Programm oder eine Anwendung, die zur Interaktion (Nutzung, Integration oder Test) von APIs verwendet wird. Am häufigsten werden „Postman“, „Insomnia“, „Curl“ usw. verwendet.

In vscode und neben einigen anderen IDEs gibt es eine Erweiterung, die Erweiterungen für API-Clients bereitstellt. vscode verfügt übrigens über einige dieser Erweiterungen. Wir werden jedoch einen API-Client namens REST Client in Betracht ziehen. Für unseren Anwendungsfall wird es einfacher sein, Rest Client als solchen zu verwenden, keine Sorge. Wir sind abgesichert.

Hinweis: Die Verwendung von Postman oder einem anderen API-Client Ihrer Wahl ist in Ordnung

So verwenden Sie den REST-Client

  • Zuerst installieren Sie den REST-Client.
  • Wir erstellen eine HTTP-Anfrage, sodass wir eine Datei mit der Erweiterung .http oder .rest erstellen können – berühren Sie Expense-Tracker-API.http
  • In Expense-Tracker-API.http können wir unsere Anfrage definieren
  • Um eine GET-Anfrage zu erstellen, fügen Sie Folgendes zur .http-Datei hinzu
{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}
  • Der Endpunkt wird wie oben gezeigt übergeben. Stellen Sie für einen Beitrag eine Anfrage zur Aktualisierung des Endpunkts oder löschen Sie sie. Erinnern Sie sich an den Unterschied zwischen einem Endpunkt und einer Route?
  • Für eine Anfrage, die die Übergabe von Daten an die API erfordert, können wir die Daten als Teil der Route als Parameter oder als Zeichenfolgenabfrage oder im Hauptteil übergeben.
# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js
  • Content-Type: application/json ist ein Header-Schlüsselwert. Das bedeutet, dass Sie Header auf diese Weise mit Rest-Client übergeben.
  • Für den Anfragetext übergeben wir ihn als JSON-Objekt – zwischen den Headern und dem Text wird jedoch eine neue Zeile erwartet
  • Jede Anfrage kann durch drei Pfund- oder Aschezeichen, ###, getrennt werden. Am Ende von ### kann ein Text hinzugefügt werden, damit es wie ein Titel aussieht.
console.log("expense-tracker-simple-api");

// import the express lib
const express = require("express");

// create an express application
const app = express();

// create a GET request on the base endpoint
app.get("/", (req, res) => res.send("Hello world"));

// create a server that listens to requests on port 3000
app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Als Übung erstellen Sie die Anfrage für die Ausgabenendpunkte. Wenden Sie sich an uns, wenn Sie Schwierigkeiten haben. Wir haben noch mehr zu tun.

Anforderungstext, Parameter, Abfrage, Header

An dieser Stelle muss ich nicht betonen, dass wir JSON verwenden würden, um über den API-Client mit unserer API zu kommunizieren.

Wie bereits erwähnt, können wir Daten mithilfe des Textkörpers, des Headers oder der URL unserer Anfrage an unsere API übergeben. Wir haben gesehen, wie man Daten über den Anforderungstext und den Header weitergibt (wir werden uns ein anderes Mal mit der Weitergabe spezifischer Daten befassen). Überprüfen Sie die erstellte POST-Anfrage. Was wir nicht untersucht haben, ist, wie Daten als Teil der URL übergeben werden.

Angenommen, wir möchten eine Ausgabe mit der ID 4 lesen, können wir einen Parameter (als Teil der URL) als /expenditures/2 hinzufügen. Für die Anfrage, die diese Anforderung bearbeiten wird, verwenden wir /expenditures/:id, wobei :id sich auf die ID der Ausgabe bezieht. Angenommen, es ist etwas anderes als eine ID, sagen wir ein Name, dann würden wir :name tun. Express wird dies verarbeiten und uns die Möglichkeit geben, diesen Wert ohne großen Aufwand zu extrahieren.

Für eine Abfragezeichenfolge ist die Idee nun ähnlich wie bei Anforderungsparametern, sie kommt jedoch nach einer Frage, gefolgt von einem Schlüssel1=Wert1&Schlüssel2=Wert2...&SchlüsselN=WertN, wobei der Schlüssel die Kennung des von Ihnen eingegebenen Werts ist möchte passieren. Ein sehr direktes Beispiel ist die REST-Client-URL, https://marketplace.visualstudio.com/items?itemName=humao.rest-client. Das Fragezeichen markiert den Anfang der Abfragezeichenfolge und alles, was darauf folgt, ordnet einen Schlüssel einem Wert zu. Beispiel: ?itemName=humao.rest-client.

Es ist ein guter Zeitpunkt, alle Ihre API-Endpunkte zu testen und damit zu experimentieren.

Anforderungstext

Jetzt verarbeiten wir eine Anfrage, die Daten über den Anfragetext weitergibt – den POST-Endpunkt.

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

Das Anforderungsobjekt hat eine Eigenschaft, einen Körper, und auf dieser Eigenschaft befinden sich die Werte, die wir im Anforderungskörper unserer Anfrage übergeben haben – req.body.

Dies ist die Anfrage, die ausgeführt wird.

# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js

Dies ist unsere Endpunktimplementierung, die lediglich den Anforderungstext in der Konsole protokolliert.

console.log("expense-tracker-simple-api");

// import the express lib
const express = require("express");

// create an express application
const app = express();

// create a GET request on the base endpoint
app.get("/", (req, res) => res.send("Hello world"));

// create a server that listens to requests on port 3000
app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Was ist passiert? Wir erhielten die übliche Antwort, aber ... undefiniert wurde in der Konsole angemeldet. Nun, es bedeutet, dass alles in Ordnung ist, aber unser API-Server weiß nicht, dass er die eingehenden Daten als JSON analysieren soll. Erinnern Sie sich an JSON?

Fügen wir diese eine Zeile unter const app = express(); Das sollte die eingehenden Daten als JSON analysieren.

const app = express();

Jetzt testen wir den POST-Endpunkt noch einmal. Was hast du dieses Mal bekommen? Hast du etwas Ähnliches bekommen?

app.get("/", (req, res) => res.send("Hello world"));

Jetzt wissen Sie, wie Sie die Daten aus dem Körper erhalten. Destrukturieren Sie nun als Übung den Körper und übergeben Sie ein Objekt in der Antwort. Anstatt es also zu protokollieren, geben Sie es als Antwort zurück.

Anforderungsparameter

Wir erstellen einen neuen GET-Endpunkt, um eine Ausgabe anhand der ID zu lesen.

Dies wird unsere API-Anfrage sein:

app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Das Anforderungsobjekt verfügt über eine Eigenschaft, params, und auf dieser Eigenschaft befinden sich die Werte, die wir im Anforderungsparameter unserer Anforderung übergeben haben – req.params.

Jetzt wird die Umsetzung ähnlich sein wie bisher, aber etwas anders.

app.get("/", (req, res, next) => ...);

Wir können auch direkt auf die ID zugreifen. Ich hoffe, Sie haben bemerkt, dass der als Teil der Route übergebene :id-Schlüssel oder -Name mit dem Schlüssel im protokollierten Objekt übereinstimmt. Versuchen Sie, den Parameterschlüssel in der Route umzubenennen, und sehen Sie sich die protokollierte Ausgabe an.

Anfrage anfordern (Abfragezeichenfolge)

Für die Abfragezeichenfolgen gibt es eine Eigenschaft im Anforderungsobjekt, query, die die übergebenen Abfragezeichenfolgen offenlegt.

Um dies zu demonstrieren, wird eine Abfragezeichenfolge übergeben, um die zurückzugebenden Datensätze zu filtern. Dieser Endpunkt sollte ausreichen.

expense-tracker-simple-api
Api running on http://localhost:3000

Jetzt wird die Implementierung in etwa so aussehen:

{
  "name": "expense-tracker-simple-api",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "express": "^4.21.2"
  }
}

Führen Sie jetzt Ihre API aus und überprüfen Sie Ihre Protokolle. Experimentieren Sie damit.

Speicherdaten manipulieren

Zu diesem Zeitpunkt stellen wir noch keine Verbindung zu einer Datenbank her, sodass wir Daten aus dem Speicher bearbeiten müssen. Was wir tun wollen, ist ein Array zu erstellen, es zu dem Array hinzuzufügen, ein Element darin zu aktualisieren und ein Element zu entfernen. Es klingt machbar, das ist es, was wir tun werden.

Wir werden einige Änderungen an einigen zuvor geschriebenen Codes vornehmen. Sie können gerne auch Ihren Code ändern. Der endgültige Auszug wird am Ende geteilt.

In-Memory-Daten initialisieren

Lassen Sie uns unten ein Array von Ausgaben (Dummy-Daten) erstellen const express = require("express");

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

Ausgaben auflisten

Der aktuelle Endpunkt gibt nur eine Nachricht mit res.send(message) zurück, aber was wir zurückgeben möchten, ist JSON. Obwohl .send auch ein Objekt oder JSON aufnehmen kann, verwenden wir res.json(obj).

Ich habe es nicht erwähnt, aber der standardmäßig zurückgegebene Statuscode ist 200. Ist Ihnen das aufgefallen? Sofern kein weiterer Fehler auftritt oder ein Problem mit der Anfrage vorliegt, bleibt der Statuscode derselbe. Es gibt einen Abschnitt unter Statuscodes, schauen Sie durch.

Wir können den Statuscode ändern, indem wir den gewünschten Statuscode in res.status(desireStatusCode).json(obj) übergeben. Ich werde den Statuscode 200 durchgehend beibehalten.

Stellen Sie sicher, dass der Server noch läuft

Wir können die Ausgabenliste direkt übergeben.

# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js

Wie war die Antwort? Überprüfen Sie den Statuscode sowie die Antwortnutzlast.

Aus Erfahrung und auch um Unklarheiten zu vermeiden, bevorzuge ich es, standardmäßig den Statuscode 200 zurückzugeben und entweder eine Erfolgseigenschaft, eine Nachricht oder eine Dateneigenschaft zu haben, um eine Nachricht oder eine angeforderte Ressource zurückzugeben. Standardmäßig wird die Nachricht weitergeleitet, wenn der Status „falsch“ ist. Andernfalls können Nachrichten oder Daten weitergeleitet werden.

console.log("expense-tracker-simple-api");

// import the express lib
const express = require("express");

// create an express application
const app = express();

// create a GET request on the base endpoint
app.get("/", (req, res) => res.send("Hello world"));

// create a server that listens to requests on port 3000
app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Wir müssen die ID (Index jeder Zeile) anzeigen

const app = express();

Filtern mit anwenden

app.get("/", (req, res) => res.send("Hello world"));

Warum wurde der Filter nach dem Mapping durchgeführt?

Ausgaben lesen

app.listen(3000, () =>
  console.log(`Api running on ${"http://localhost:3000"}`)
);

Gibt Ihnen diese Implementierung einen Hinweis darauf, Warum wurde der Filter nach der Zuordnung durchgeführt? ?

Ausgaben erstellen

app.get("/", (req, res, next) => ...);

Ausgaben aktualisieren

expense-tracker-simple-api
Api running on http://localhost:3000

Ausgaben löschen

{
  "name": "expense-tracker-simple-api",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "express": "^4.21.2"
  }
}

Abschluss

Wir haben die Wurzeln der meisten API-Entwicklungen abgedeckt. Dieses Projekt ist so einfach wie es nur sein kann. Entspannen Sie sich und schauen Sie noch einmal durch. Es gibt noch mehr zu prüfen, z. B.

  • Validierung
  • Authentifizierung und Autorisierung
  • Middleware
  • Fehlerbehandlung
  • SQL
  • Datenbankintegration

Übungsprojekt

crud api = erstellen, auflisten, lesen, aktualisieren und löschen. So gehen Sie diese Probleme an.

To-Do-Liste

  • todo-Objekt: { id: int, task: string, status: boolean }
  • rohe API
  • Fügen Sie einen Endpunkt hinzu, um alle Aufgaben als abgeschlossen zu markieren, Erfolg ist wahr oder nicht abgeschlossen

Rechner⁠

  • Sie müssen entscheiden, ob Sie einen Endpunkt für alle Operationen (Addition, Subtraktion, Multiplikation, Division) erstellen möchten
  • Oder Sie würden einen einzelnen Endpunkt mit unterschiedlichen Funktionen erstellen, die jedem Vorgang entsprechen. Der Benutzer sollte in der Lage sein, den Operator und die beiden Operanden zu übergeben

Währungsumrechner⁠
Sie konvertieren von einer Währung in eine andere. Tun Sie dies für so viele Währungen wie möglich (3 sind genug)

  • Einheitenrechner⁠ ⁠- Notizen-App⁠ ⁠- Persönlicher Blog⁠ ⁠- Quiz-App⁠

Ausschnitte

Wissen Sie, dass der Überschuss entfernt wurde.

{
    "name": "Legion Tower 7i Gen 8 (Intel) Gaming Desktop",
    "amount": 2099.99,
    "date": "2024-31-12"
}

API-Anfragen

# create a folder for the project at the path of your choice
mkdir expense-tracker-simple-api

# open the project with vscode
# code expense-tracker-simple-api
code -r expense-tracker-simple-api

# open the built-in terminal and init node
npm init -y
# this should create the package.json file

# create the entry file, index.js
echo "console.log(\"expense-tracker-simple-api\");" > index.js

# run the index.js file
node index.js

Das obige ist der detaillierte Inhalt vonGrundlegende CRUD-API mit Express. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn