
Ruhe ist eine Abkürzung für die Übertragung der Repräsentationsstatus . RESTFOR API ist ein architektonischer Stil für eine Anwendungsprogrammschnittstelle (API), die HTTP -Anforderungen zum Zugriff auf und ändern Sie auf Daten. Diese Daten können verwendet werden, um Datentypen zu erhalten, zu setzen, zu posten und zu löschen , wodurch sich das Lesen, Aktualisieren, Erstellen und Löschen von Vorgängen in Bezug auf Ressourcen bezieht. Für weitere Details
Die Hauptfunktionen, die in jeder ruhbasierten Architektur verwendet werden, sind:
Ihre Bewerbung muss bestimmte Einschränkungen oder Grundsätze erfüllen. Lassen Sie uns auf Details zu diesen Prinzipien eingehen.
Im Folgenden gibt es sechs Grundprinzipien, die sechs Leitprinzipien der Ruhe sind:
Beantwortungslos: Anfragen, die von einem Client an den Server gesendet werden, enthält alle erforderlichen Informationen, die erforderlich sind, um sie vollständig zu verstehen. Es kann Teil der URI, Abfrage-String-Parameter, Körper oder sogar Header sein. Der URI wird verwendet, um die Ressource einzigartig zu identifizieren, und der Körper hält den Zustand der anfordernden Ressource. Sobald die Verarbeitung vom Server durchgeführt wird, wird eine geeignete Antwort über Header, Status oder Antwortkörper an den Client zurückgesendet.
Client-Server: Es verfügt über eine einheitliche Schnittstelle, die die Clients von den Servern trennt. Das Trennen der Bedenken hilft bei der Verbesserung der Portabilität der Benutzeroberfläche über mehrere Plattformen sowie die Skalierbarkeit der Serverkomponenten.
Einheitliche Schnittstelle: Um die Einheitlichkeit in der gesamten Anwendung zu erhalten, hat Rest vier Schnittstellenbeschränkungen definiert, nämlich:
Resource identification
Resource Manipulation using representations
Self-descriptive messages
Hypermedia as the engine of application state
Zwischengespeichert: Um eine bessere Leistung zu erzielen, werden die Anwendungen häufig zwischengespeichert. Dies geschieht durch die Beschriftung der Antwort vom Server als zwischen oder nicht implizit oder explizit als zwischengespeichert oder nicht weiter. Wenn die Antwort als zwischengespeicherbar definiert ist, kann der Client -Cache die Antwortdaten für äquivalente Antworten in Zukunft wiederverwenden. Es hilft auch dabei, die Wiederverwendung der veralteten Daten zu verhindern.
Layered System: Die Schicht -Systemarchitektur ermöglicht es einer Anwendung, durch Einschränkung des Komponentenverhaltens stabiler zu sein. Diese Architektur ermöglicht Lastausgleich und bietet gemeinsame Caches zur Förderung der Skalierbarkeit. Die geschichtete Architektur hilft auch bei der Verbesserung der Sicherheit der Anwendung, da Komponenten in jeder Schicht nicht über die nächste unmittelbare Ebene hinausgehen können, in der sie sich befinden.
Code on Demand: Code on Demand ist eine optionale Einschränkung und wird am wenigsten verwendet. Es ermöglicht einen Client -Code oder Applets, die über die Schnittstelle in der Anwendung heruntergeladen und erweitert werden können. Im Wesentlichen vereinfacht es die Clients, indem eine intelligente Anwendung erstellt wird, die sich nicht auf eine eigene Codestruktur beruht.
Nachdem Sie nun wissen, was eine REST -API ist und was Sie nur um eine effiziente Anwendung liefern müssen, lassen Sie uns tiefer tauchen und den Prozess des Erstellens von REST -API mit allen Trendtechnologien und Frameowrks sehen.
SOAP (Simple -Object -Zugriffsprotokoll) bieten verschiedene Methoden, um einen Webdienst aufzurufen. Rest ist ein architektonischer Stil, während SOAP eine Standard-Kommunikationsprotokollspezifikation für XML-basierte Nachrichtenaustausch definiert. REST -Anwendungen können SOAP verwenden.
Erholte Webdienste sind staatenlos. Eine ruhbasierte Implementierung ist im Vergleich zu SOAP einfach, aber Benutzer müssen den Kontext und den Inhalt verstehen, da es keine Standardregeln für die Beschreibung der REST-Webdienste-Schnittstelle gibt. REST -Dienste sind nützlich für eingeschränkte Profilgeräte wie Mobilgeräte und sind leicht in die vorhandenen Websites zu integrieren.
SOAP erfordert weniger Sanitärcode, was mit niedrigem und niedrigem und infrastrukturellem Code bedeutet, der die Hauptcodemodule miteinander verbindet als das Design von REST-Diensten. Die Beschreibung der Webdienste beschreibt eine gemeinsame Reihe von Regeln, um die Nachrichten, Bindungen, Operationen und den Standort des Dienstes zu definieren. SOAP -Webdienste sind nützlich für die asynchrone Verarbeitung und Aufruf.
Dies sind einige Punkte, die Sie bei der Entwicklung von REST -API in Betracht ziehen müssen:
Extrem große Nutzlast von Antwortdaten verlangsamen die Anfrage abgeschlossen, andere Serviceanrufe und beeinträchtigen die Leistung beeinträchtigen. Wie Sie wissen, müssen wir uns jetzt, da wir alle Bestellungen für den Kunden zurückgeben, im Gegensatz zu ihrer aktuellen Bestellung, mit einer Leistungsdämpferung.
Wir können GZip Compression verwenden, um unsere Nutzlastgröße zu reduzieren. Dies verringert die Download -Größe unserer Antwort auf der Web -App (Client -Seite) und erhöht die Upload -Geschwindigkeit oder die Erstellung einer Entität (Bestellungen). Wir können Deflate compression auf einer Web -API verwenden. Oder wir können den Akzept-CodingRequest-Header auf GZIP aktualisieren .
Caching ist eine der einfachsten Methoden zur Verbesserung der Leistung einer API. Wenn wir Anfragen haben, die häufig die gleiche Antwort zurückgeben, kann eine zwischengespeicherte Version dieser Antwort zusätzliche Serviceanrufe/Datenbankabfragen vermeiden . Sie möchten sicherstellen, dass Sie bei der Verwendung von Caching die Daten im Cache regelmäßig ungültig machen, insbesondere wenn neue Datenaktualisierungen auftreten.
Nehmen wir an, unser Kunde möchte eine Bestellung für ein Auto -Teil aufgeben, und unsere App ruft an eine Auto -Teile -API auf, um den Teilpreis zu erzielen. Da sich die Antwort (Teilpreis) nur einmal pro Woche ändert (um 1:00 Uhr), können wir die Antwort für den Rest der Zeit bis dahin zwischenspeichern. Dies speichert uns davor, einen neuen Anruf zu tätigen, um den gleichen Teilpreis zurückzugeben. Ein ähnlicher Fall können Sie Cache verwenden, um zusätzliche Anrufe oder Anfragen zu vermeiden.
Ein langsames Netzwerk wird die Leistung selbst der robustesten API abbauen. Unzuverlässige Netzwerke können Ausfallzeiten verursachen, was dazu führen kann, dass Ihre Organisation gegen SLAs, die Nutzungsbedingungen und Versprechen verstößt, die Sie Ihren Kunden möglicherweise gemacht haben. Es ist wichtig, in die richtige Netzwerkinfrastruktur zu investieren, damit wir das gewünschte Leistungsniveau beibehalten können. Dies kann erreicht werden, indem ausreichende Cloud -Ressourcen und -infrastrukturen genutzt und gekauft werden (example: in AWS, allocate the proper # of EC2 instances, use a Network Load Balancer) . Wenn Sie eine große Menge an Hintergrundprozessen haben, führen Sie diese auf separaten Threads aus, um die Blockierung von Anforderungen zu vermeiden. Sie können auch Spiegel und Content Delivery Networks (CDNs) wie CloudFront verwenden, um Anforderungen schneller in verschiedenen Teilen des Globus zu stellen.
Sie können eine Situation haben, in der Ihre API einen DDOS -Angriff erleidet, der entweder böswillig und vorsätzlich oder unintenional sein kann, wenn ein Ingenieur die API anruft, um eine Schleife von einer lokalen Anwendung auszuführen. Sie können dies vermeiden, indem Sie Transaktionen messen und monitoring the number of how many transactions occur per IP Address, or per SSO/JWT Token (if the customer/calling app is authorized before calling the API) .
Diese Methode zur bewerteten Beschränkung hilft, übermäßige Anfragen zu reduzieren, die die API verlangsamen, mit zufälligen Anrufen/Ausführungen umgehen und mögliche böswillige Aktivitäten proaktiv überwachen und identifizieren.
Es ist ein weit verbreitetes Missverständnis bei Ingenieuren, die den gleichen Ergebnis verleihen und Patch -Operationen ergeben. Sie sind ähnlich in der Aktualisierung der Ressourcen, aber sie führen jeweils die Aktualisierungen unterschiedlich aus. Setzen Sie Operations -Update -Ressourcen durch, indem Sie Updates an die gesamte Ressource senden. Patch -Operationen wenden teilweise Aktualisierungen nur auf die Ressourcen an, die aktualisiert werden müssen. Resultierende Inpatch -Aufrufe, die kleinere Nutzlasten erzeugen, und die Leistung im Maßstab verbessern.
Pro-Tip: Even though PATCH calls can limit the request size, you should note that it is not Idempotent.
Meaning, it is possible that a PATCHcan yield different results with a series of multiple calls.
So, you should carefully and deliberately consider your application for using PATCH requests,
and make sure that they are idempotently implemented if needed. If not, use PUT requests.
Dies ist vielleicht einer der wichtigsten Tipps, die Sie hier lesen werden. Wenn es eine Sache gibt, die Sie von diesem Repo lernen sollten, sollte es das sein! Keine Verhandlungen darüber.
Protokolle, Überwachung und Alarmierung helfen den Ingenieuren, Probleme zu diagnostizieren und zu beheben, bevor sie zu Problemen werden . Viele APIs (Express/Node-basiert, Java, GO) haben vordefinierte Endpunkte zur Bewertung von Dingen wie:
`/health`
`/metrics`
Wenn Sie keine Protokollierung aktiviert haben und ein potenzielles Problem vorliegt, können Sie den Ursprung nicht verfolgen oder wo das Problem in einer bestimmten Anfrage auftritt.
Wenn Sie keine Überwachung aktiviert haben, wissen Sie nicht aus analytischer Perspektive, wie oft einige Probleme oder Fehler auftreten. Dies wird Sie dann daran hindern, an mögliche Lösungen zu denken.
Und… wenn Sie nicht benachrichtigt werden, werden Sie nicht wissen, ob es ein Problem gibt, bis ein Kunde (oder schlimmer, Kunden) es meldet.
Pagination hilft, Inhalte aus mehreren Antworten zu erstellen . Diese Art der Optimierung verbessert die Antworten und die Aufrechterhaltung der Daten, die an einen Kunden übertragen/angezeigt werden. Sie können die Antworten standardisieren, segmentieren und begrenzen, die dazu beitragen, die Komplexität der Ergebnisse zu verringern, und das allgemeine Kundenerlebnis zu verbessern, indem Sie die Antwort/Ergebnisse nur für das bereitstellen, was ein Kunde verlangt hat.
Wir wissen, dass APIs erstaunlich sind und dem Geschäft und den Kunden äußerst leistungsfähig sein können, wenn sie eine großartige Erfahrung bieten, wenn sie für die Leistung ordnungsgemäß optimiert und verbessert werden. Geschäftsanforderungen und Kundenerwartungen entwickeln sich im Laufe der Zeit immer. Und als verantwortungsbewusste Ingenieure liegt es an uns, zu entscheiden, wie wir unsere APIs auf leistungsfähige Weise bauen können, was uns helfen kann, unsere Ziele zu erreichen und zu übertreffen.
Diese Tipps sind nur die Spitze des Eisbergs und gelten für alle APIs in einer allgemeinen Umgebung. Abhängig von Ihrer speziellen API und Ihrem Anwendungsfall, mit welchen Diensten sie interagiert, wie oft es aufgerufen wird, von wo aus sie aufgerufen werden usw. Sie müssen diese Tipps möglicherweise auf unterschiedliche Weise implementieren.
Ruhe -API mit Laravel - Pass
REST -API mit PHP - oops
Ruhe -API mit Python - Kolben
REST -API mit Python - Django - Rastframework
Restapi mit Go - Mux
Ruhe -API mit Go - Gin
REST -API mit NodeJs - Express - Basic
REST -API mit NodeJs - Express -jwt - Sequellze - Fortschritt
Sehr einfach zu erstellen, um REST -API in wenigen Minuten zu erstellen. Sie können eine der oben genannten Codebasis entsprechend Ihrer Sprache und Ihren Framework -Einstellungen auswählen und Anweisungen befolgen, um REST -API zu erstellen.
Happy Coding?
LinkedIn: https://www.linkedin.com/in/the-startup-cto/
Medium: https://apige.medium.com/
Twitter: https://twitter.com/htngapi