Detaillierte Erläuterung der REST -API: leicht zu verstehen die am häufigsten verwendeten Netzwerk -Service -Technologien
Rest, das für "Repräsentationsstatustransfer" steht, ist derzeit die am weitesten verbreitete Netzwerkservice -Technologie. Obwohl sein Name etwas abstrakt ist, ist die Rest -API im Wesentlichen eine Möglichkeit für zwei Computersysteme, mithilfe der HTTP -Technologie zu kommunizieren, die auf Webbrowsern und Servern üblich ist.
In der Softwareentwicklung ist der Datenaustausch zwischen Systemen immer eine grundlegende Anforderung. Beim Kauf von Autoversicherungen muss die Versicherungsgesellschaft beispielsweise Ihre persönlichen Informationen und Fahrzeuginformationen erhalten, sodass sie Daten von Fahrzeugregistrierungsagenturen, Kreditagenturen, Banken und anderen Systemen anfordern müssen. All dies erfolgt in Echtzeit transparent, um festzustellen, ob ein Versicherer eine Wettbewerbsrichtlinie anbieten kann.
API (Anwendungsprogrammierschnittstelle) realisiert eine solche Kommunikation zwischen Systemen und Bereitstellung einer Schnittstelle für die Kommunikation zwischen Systemen. Ruhe ist nur ein weit verbreiteter API -Stil, und wir verwenden sie, um auf konsistente und vorhersehbare Weise mit internen und externen Parteien zu kommunizieren. Dies kann mit der Art und Weise verglichen werden, wie wir Briefe mit Briefmarken, Adressen und Umschlägen in irgendeiner Weise gesendet haben, um sicherzustellen, dass sie geliefert und gelesen wurden.
Rest wird häufig für Personeninteraktionen in Netzwerksystemen verwendet, wie z. B. Abrufen und Aktualisieren von Kontoinformationen in Social -Media -Anwendungen.
Öffnen Sie den folgenden Link in Ihrem Browser, um ein zufälliges Computerproblem aus der offenen Trivia -Datenbank anzufordern:
https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3
Dies ist eine öffentliche API, die als erholsamer Webdienst implementiert wird (sie folgt der Restkonvention). Ihr Browser zeigt eine einzelne JSON -Format -Quizfrage mit Antworten an, wie z. B.
<code>{ "response_code": 0, "results": [ { "category": "Science: Computers", "type": "multiple", "difficulty": "easy", "question": "What does GHz stand for?", "correct_answer": "Gigahertz", "incorrect_answers": [ "Gigahotz", "Gigahetz", "Gigahatz" ] } ] }</code>
Sie können jeden HTTP -Client (z. B. Curl) verwenden, um dieselbe URL anzufordern und die Antwort zu erhalten:
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
HTTP -Client -Bibliotheken sind in allen beliebten Sprachen und Laufzeitumgebungen verfügbar, einschließlich Fetch in JavaScript, Node.js und Deno und file_get_contents()
in PHP. JSON -Antworten sind maschinell lesbar, sodass sie analysiert und verwendet werden können, bevor sie HTML oder andere Formate ausgeben.
Im Laufe der Jahre wurden verschiedene Datenkommunikationsstandards kontinuierlich entwickelt. Möglicherweise haben Sie Optionen wie CORBA, SOAP oder XML-RPC begegnet. Die meisten haben strenge Informationsregeln.
Rest wurde im Jahr 2000 durch Roy Fielding definiert und ist viel einfacher als andere Technologien. Es ist kein Standard, sondern eine Reihe von Vorschlägen und Einschränkungen zu erholsamen Webdiensten. Dazu gehören:
RESTFAY -Webdienstanforderungen umfassen:
Endpunkt -URL. Eine Anwendung, die die erholsame API implementiert, definiert einen oder mehrere URL -Endpunkte, einschließlich Domain -Namen, Ports, Pfaden und/oder Abfragestränen - beispielsweise https://mydomain/user/123?format=json
.
HTTP -Methode. Für jeden Endpunkt können verschiedene HTTP -Methoden verwendet werden, die den Erstellungs-, Lesen-, Aktualisierungs- und Löschen (CRUD-) Vorgängen der Anwendung entsprechen:
HTTP -Methode crud Betrieb zurückgeben
Get lesen Rückgabered Daten
post erstellen Erstellen Sie einen neuen Datensatz
put oder patch update Aktualisieren Sie vorhandene Datensätze Vorhandene Datensätze Löschen Löschen Löschen
/user/
/user/
zurück
/user/123
/user/123
/user/123
http Header. Informationen wie Authentifizierungs -Token oder Cookies können in den HTTP -Anfrage -Header aufgenommen werden.
<script> fetch('http://localhost:8888/hello/') .then((response) => { return response.json(); }) .then((json) => { console.log(json); }); </script> Betreffdaten. Die Daten werden normalerweise über die HTTP-Karosserie auf die gleiche Weise übertragen wie mit HTML oder durch Senden einer einzelnen JSON-kodierten Datenzeichenfolge.
Antwortnutzlast kann jeder praktische Inhalt sein: Daten, HTML, Bilder, Audiodateien usw. Datenantworten sind normalerweise JSON-codiert, können aber auch in XML, CSV, einfachen Zeichenfolgen oder einem anderen Format verwendet werden. Sie können Ihnen erlauben, das Rückgabeformat in der Anforderung anzugeben - beispielsweise /user/123?format=json
oder /user/123?format=xml
.
Der entsprechende HTTP -Statuscode sollte ebenfalls im Antwortheader festgelegt werden. 200 OK wird für erfolgreiche Anfragen verwendet, obwohl 201 erstellt werden kann, wenn der Datensatz erstellt wird. Fehler sollten geeignete Codes wie 400 schlechte Anfrage, 404 nicht gefunden, 401 nicht autorisiert usw.
Andere HTTP-Header, einschließlich Cache-Kontroll- oder Ablaufanweisungen, können festgelegt werden, wie lange sie zwischengespeichert werden können, bevor die Antwort als "abgestanden" betrachtet werden kann.
Es gibt jedoch keine strengen Regeln. Endpunkt -URLs, HTTP -Methoden, Körperdaten und Antworttypen können entsprechend Ihren Vorlieben implementiert werden. Zum Beispiel werden Post, Put und Patch häufig austauschbar verwendet, sodass entweder Datensätze nach Bedarf erstellt oder aktualisiert werden.
Der folgende Node.js -Code verwendet das Express -Framework, um einen erholsamen Webdienst zu erstellen. Ein einzelner /hello/
Endpunkt reagiert auf eine HTTP -Anforderung.
Stellen Sie sicher, dass node.js installiert ist und einen neuen Ordner namens restapi
erstellen. Erstellen Sie in diesem Ordner eine neue package.json
-Datei mit dem folgenden Inhalt:
<code>{ "response_code": 0, "results": [ { "category": "Science: Computers", "type": "multiple", "difficulty": "easy", "question": "What does GHz stand for?", "correct_answer": "Gigahertz", "incorrect_answers": [ "Gigahotz", "Gigahetz", "Gigahatz" ] } ] }</code>
Ausführen npm install
aus der Befehlszeile ausführen, um die Abhängigkeiten abzurufen und eine index.js
Datei mit dem folgenden Code zu erstellen:
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
Verwenden Sie npm start
, um die Anwendung aus der Befehlszeile zu starten und http://localhost:8888/hello/
in Ihrem Browser zu öffnen. Der folgende JSON wird als Antwort auf eine GET -Anfrage angezeigt:
<code>{ "name": "restapi", "version": "1.0.0", "description": "REST test", "scripts": { "start": "node ./index.js" }, "dependencies": { "express": "4.18.1" } }</code>
API erlaubt auch benutzerdefinierte Namen, also http://localhost:8888/hello/everyone/
zurück:
// simple Express.js RESTful API 'use strict'; // initialize const port = 8888, express = require('express'), app = express(); // /hello/ GET request app.get('/hello/:name?', (req, res) => res.json( { message: `Hello ${req.params.name || 'world'}!` } ) ); // start server app.listen(port, () => console.log(`Server started on port ${port}`); );
Betrachten Sie die folgenden HTML -Seiten, die mit URL http://localhost:8888/
in Ihrem Browser gestartet wurden:
{ "message": "Hello world!" }
-Fetch -Anruf führt dieselbe API -Anforderung aus, und die Browserkonsole zeigt wie erwartet Object { message: "Hello world!" }
an.
Nehmen wir jedoch an, Ihr erholsamer Webdienst ist jetzt online im Domain -Namen http://mydomain.com/hello/
im Web. Die Seite JavaScript fetch()
URL ändert sich entsprechend, aber das Öffnen http://localhost:8888/
im Browser gibt nun den Konsolenfehler Cross-Origin Request Blocked
zurück.
Aus Sicherheitsgründen kann der Browser nur den Client XMLHTTPREQUEST- und Abrufen -API -Aufrufen in derselben Domain wie die Anrufseite gehostet werden.
Zum Glück ermöglicht es uns, diese Sicherheitsbeschränkung zu umgehen. Die Einstellungen Access-Control-Allow-Origin
HTTP -Antwortheader geben dem Browser an, Anforderungen zuzulassen. Es kann auf einen bestimmten Domänennamen oder *
festgelegt werden (dargestellt alle Domänennamen) (wie in der obigen Quiz -API angezeigt).
Der Webdienst -API -Code kann geändert werden, um Zugriff auf jedes Client -Skript zu ermöglichen, das auf jedem Domänennamen ausgeführt wird:
<code>{ "response_code": 0, "results": [ { "category": "Science: Computers", "type": "multiple", "difficulty": "easy", "question": "What does GHz stand for?", "correct_answer": "Gigahertz", "incorrect_answers": [ "Gigahotz", "Gigahetz", "Gigahatz" ] } ] }</code>
Alternativ können Sie die Middleware -Funktion express.js verwenden, um den Header an jeder Endpunktanforderung anzubringen:
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
Bitte beachten Sie, dass der Browser zwei Anfragen an die Rest -API stellt:
Access-Control-Allow-Origin
http einstellen und eine virtuelle leere Antwort zurückgeben, um sicherzustellen, dass keine doppelte Arbeit erledigt ist. Access-Control-Allow-Origin
Endpunktkonsistenz
/user/123
/user/id/123
/user/?id=123
letztendlich spielt es keine Rolle, wie Sie die URL formatieren, aber die Konsistenz der API ist sehr wichtig. Dies kann eine Herausforderung für eine große Codebasis mit vielen Entwicklern sein.
REST -API -Version steuern
APIs übernehmen normalerweise die Versionskontrolle, um Kompatibilitätsprobleme zu vermeiden. Zum Beispiel ersetzt
/2.0/user/123
. Sowohl neue als auch alte Endpunkte können aktiv bleiben. Leider erfordert dies dann die Aufrechterhaltung mehrerer historischer APIs. Ältere Versionen können schließlich verworfen werden, aber dieser Prozess erfordert eine sorgfältige Planung. /user/123
öffnen : Jedes System kann Witze ohne Genehmigung erhalten. Dies ist für APIs, die auf private Daten zugreifen oder Aktualisierungen zuzulassen und Anforderungen zu löschen, nicht möglich.
Client -Anwendungen, die sich in derselben Domäne wie die erholsame API befinden, sendet und empfängt Cookies wie jede andere HTTP -Anfrage. (Beachten Sie, dass Fetch () in älteren Browsern die Option Initialisierung festlegen muss.) Daher kann die API -Anforderung überprüft werden, um sicherzustellen, dass der Benutzer angemeldet ist und über die entsprechenden Berechtigungen verfügt. credentials
API -Authentifizierung hängt von der Verwendungsumgebung ab:
RESTFOR API bietet eine weitere Möglichkeit, auf Anwendungen zuzugreifen und sie zu betreiben. Auch wenn es sich nicht um ein hochübergehendes Hacker-Ziel handelt, kann ein schlecht verhaltener Client Tausende von Anforderungen pro Sekunde senden und Ihren Server zum Absturz bringen.
Sicherheit liegt nicht im Rahmen dieses Artikels, aber die gemeinsamen Best Practices umfassen:
RESTful -API ist durch ihre Umsetzung begrenzt. Die Antwort kann mehr Daten enthalten als Sie benötigen, oder weitere Anfragen sind erforderlich, um auf alle Daten zuzugreifen.
Betrachten Sie eine erholsame API, die Zugriff auf Autoren- und Buchdaten bietet. Um Daten von den zehn Top -Bestsellern anzuzeigen, kann der Client:
/book/
Fordern Sie die Top 10 nach Verkaufsmenge an (Bestseller bevorzugt) /author/{id}
Senden Sie bis zu 10 Dies wird als N 1 -Problem bezeichnet. <script> fetch('http://localhost:8888/hello/') .then((response) => { return response.json(); }) .then((json) => { console.log(json); }); </script>
Wenn dies ein allgemeiner Anwendungsfall ist, können Sie die erholsame API ändern, sodass jedes zurückgegebene Buch vollständige Autorendetails wie Namen, Alter, Land, Biographie und mehr enthält. Es kann sogar vollständige Details seiner anderen Bücher liefern - obwohl dies die Reaktionsnutzlast erheblich erhöhen kann!
Um unnötige große Antworten zu vermeiden, kann die API angepasst werden, um die Autorendetails optional zu gestalten - beispielsweise ?author_details=full
. Die Anzahl der Optionen, mit denen API -Autoren zu tun haben, kann schillernden.
REST -Puzzle -LED -Facebook zum Erstellen von GraphQL, eine Web -Service -Abfragesprache. Betrachten Sie es als Webdienst SQL: Eine einzige Anfrage definiert die benötigten Daten und wie Sie sie zurückgeben möchten.
GraphQL löst einige der Herausforderungen der erholsamen API, obwohl sie andere einführt. Zum Beispiel wird die Caching -GraphQL -Antworten schwierig.
Ihr Kunde ist unwahrscheinlich, dass es ein ähnliches Problem mit Facebook hat. Daher kann es sich lohnt, GraphQL zu erwägen, nachdem die erholsame API die tatsächliche Grenze überschreitet.
Es gibt viele Tools in allen Sprachen, die bei der erholsamen API -Entwicklung helfen können. Bemerkenswerte Optionen umfassen:
häufig gestellte Fragen zur REST -API
Was sind die Hauptmerkmale der Rest -API? Die REST-API ist durch die Verwendung von Ressourcen, die Kommunikation zwischen Client-Server, Standard-HTTP-Methoden (Get, Post, Put, Put, Löschen) und einheitliche Schnittstellen gekennzeichnet, die normalerweise den Zugriff und die Manipulation von Ressourcen mit URLs beinhalten.
Warum heißt es REST -API?
Was sind die Vorteile der Verwendung von REST -API? Die Rest -API bietet viele Vorteile, einschließlich Einfachheit, Skalierbarkeit, einfache Integration, Plattformunabhängigkeit und Trennung von Bedenken. Sie nutzen auch die vorhandene HTTP -Infrastruktur, die ideal für Web- und mobile Anwendungen ist.
ist die Rest -API auf Webanwendungen beschränkt? Nein, die Rest -API ist nicht auf Webanwendungen beschränkt. Sie können verwendet werden, um die Kommunikation zwischen verschiedenen Arten von Softwareanwendungen zu erleichtern, einschließlich Webanwendungen, mobiler Anwendungen und sogar Server-zu-Server-Kommunikation.
REST -API besteht aus vier Hauptkomponenten, die allgemein als "vier Säulen" der Ruhe bezeichnet werden. Diese Komponenten definieren die Struktur, das Verhalten und die Interaktion von APIs im restlichen architektonischen Stil. Die vier Komponenten sind Ressourcen, HTTP -Methoden (Verben), Darstellungen und allgemeine Schnittstellen.
Mit welchen Tools oder Bibliotheken kann ich die Rest -API erstellen? Es gibt viele Werkzeuge und Frameworks zum Erstellen von REST -APIs, einschließlich Express.js (Node.js), Flask (Python), Ruby on Rails (Ruby), Django (Python), Spring Stiefel (Java) und mehr.
Diese Antwort behält die ursprüngliche Bildformatierung und die Platzierung bei.
Das obige ist der detaillierte Inhalt vonWas ist eine REST -API?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!