Was Anfänger lernen können, indem sie eine einfache Rails-API erstellen

Einführung

Ich habe [diesen Artikel] gelesen (https://qiita.com/k-penguin-sato/items/adba7a1a1ecc3582a9c9) und versucht, selbst eine einfache API zu erstellen. Infolgedessen habe ich mein Wissen über REST und ROA vertieft und möchte es gerne teilen.

Was ist REST?

Geeignet zum Verknüpfen mehrerer Software in einem verteilten System Eine Reihe von Gestaltungsprinzipien und Ideen.

Eine davon ist ROA (Resource Oriented Architecture) </ strong>.

Was ist ROA?

Im Web vorhandene Informationen und Daten werden als Ressourcen </ strong> und die Ressourcen als Zentrum betrachtet. Die Architektur.

Darüber hinaus verfügt die Ressource über mindestens einen URI als Bedingung dafür, dass die Ressource eine Ressource ist.

ROA-Eigenschaften

  • Adressierbarkeit
  • Staatenlos
  • Konnektivität
  • Einheitliche Schnittstelle

Schauen wir uns jeden an

Adressierbarkeit

Die zur Verfügung zu stellenden Informationen können über URI ausgedrückt werden. Alle Informationen müssen eine eindeutige Adresse haben, die durch eine URI dargestellt wird.

Zum Beispiel, wenn der Basis-URI lautet: http://example.com

Wenn Sie die Informationen eines bestimmten Benutzers wissen möchten http://example.com/users/1

Wenn Sie Katzeninformationen wissen möchten http://example.com/cat

Wenn Sie die Informationen der Maus wissen möchten http://example.com/mouse

Sie können die Informationen, die bereitgestellt werden sollen, anhand der URI verstehen.

Staatenlos

Muss ein zustandsloses Client / Server-Protokoll sein, das auf HTTP basiert. Die ausgetauschten Informationen können vollständig von selbst interpretiert werden, ohne den Status von Sitzungen zu verwalten.

Dies ist die folgende Analogie leicht zu verstehen

(Stateful Beispiel): Kunde: Hallo Angestellter: Willkommen. Willkommen bei XX Burger Kunde: Ich hätte gerne ein Hamburger-Set Angestellter: Was möchten Sie für das Seitenmenü? Kunde: Mit Kartoffeln Angestellter: Was möchten Sie trinken? Kunde: Bei Ginger Ale Angestellter: Wie wäre es mit einem Getränk der Größe L für +50 Yen? Kunde: M geht es gut Angestellter: Sind Sie sicher, dass Sie das tun möchten? Kunde: Ja Angestellter: Ich bin schlau

(Staatenloses Beispiel): Kunde: Hallo Angestellter: Willkommen. Willkommen bei XX Burger Kunde: Ich hätte gerne ein Hamburger-Set Angestellter: Was möchten Sie für das Seitenmenü? Kunde: Bitte geben Sie mir ein Hamburger-Set mit Kartoffeln Angestellter: Was möchten Sie trinken? Kunde: Bitte geben Sie mir ein Hamburger-Set mit Kartoffeln und Ginger Ale Angestellter: Wie wäre es mit einem Getränk der Größe L für +50 Yen? Kunde: Bitte geben Sie mir ein Hamburger-Set mit Kartoffeln und Ginger Ale (M) Angestellter: Sind Sie sicher, dass Sie das tun möchten? Kunde: Bitte geben Sie mir ein Hamburger-Set mit Kartoffeln und Ginger Ale (M). das ist alles Angestellter: Ich bin schlau

Wenn Sie sich den Angestellten als Server vorstellen, hat der Angestellte die ganze Zeit mit einem Kunden zu tun. Während dieser Zeit ist es nicht möglich, mit anderen Kunden zu verhandeln. Wenn der Laden überfüllt ist (wenn der Zugang zunimmt) Erhöhen Sie die Anzahl der Angestellten (zusätzlicher WEB-Server), die antworten sollen.

In einem normalen Geschäft akzeptiert ein Angestellter immer denselben Kunden an einer Registrierkasse. Im Fall von WEB, da mehrere WEB-Server mehrere Clients gleichzeitig empfangen, Wenn es sich um einen zustandslosen Server handelt, wird jeder Interaktion wie oben beschrieben ein separater Sachbearbeiter zugewiesen. Es wird möglich, auf die Bestellung des Kunden zu antworten.

Quelle Was ist zustandslos

Konnektivität

In der Lage sein, andere Informationen oder Links zu diesen Informationen in die Informationen aufzunehmen.

Einheitliche Schnittstelle

Alle Informationsoperationen (Abrufen, Erstellen, Aktualisieren, Löschen) sind HTTP-Methoden (GET, POST, PUT, DELETE). Benutzen.

GET Eine Methode zum Abrufen der Informationen des angegebenen URI. Dies umfasst das Abrufen von Webseiten, Bildern, Videos und Feeds.

POST POST hat die folgenden drei Rollen.

1. Erstellen Sie eine untergeordnete Ressource für die übergeordnete Ressource

Angenommen, Sie haben eine solche Blog-Ressource (übergeordnet).  http://example.com/myblog

Dann einzelne Blogeinträge (untergeordnete Ressourcen),  http://example.com/myblog/entries/1

Kann als bereitgestellt werden.

2. Fügen Sie Ressourcen zu Ressourcen hinzu

Fügen Sie einer vorhandenen Ressource Daten hinzu. Der Unterschied zum vorherigen besteht darin, ob die Ressourcen eine Eltern-Kind-Beziehung haben. http://example.com/myblog

3. POST überladen

Führt eine Verarbeitung durch, die von anderen Methoden nicht verarbeitet werden kann. Diese Verwendung weicht jedoch von der einheitlichen Schnittstelle in ROA ab. Daher ist es besser, sie nicht so oft wie möglich zu verwenden.

PUT Es gibt zwei Möglichkeiten, PUT zu verwenden.

  • Neue Ressource erstellen
  • Aktualisieren Sie vorhandene Ressourcen

Wenn man dies allein betrachtet, scheint es, dass die Rolle POST ähnlich ist.

Erstellen einer untergeordneten Ressource für die übergeordnete Ressource = Erstellen einer neuen Ressource Hinzufügen von Daten zu Ressourcen = Aktualisierung vorhandener Ressourcen

Tatsächlich scheint es keine klare Antwort zu geben. Die folgenden Richtlinien gelten jedoch als Entwurfsrichtlinien.

Es gibt keine richtige Antwort darauf, aber es gibt einige Designrichtlinien: Beim Erstellen einer Ressource mit POST kann der Client den URI der Ressource nicht angeben. Die Entscheidung über den URI liegt beim Server. Umgekehrt wird beim Erstellen einer Ressource mit PUT der URI der Ressource vom Client bestimmt. (Ausgelassen) Im Allgemeinen bedeutet die Tatsache, dass der Client den URI einer Ressource bestimmen kann, dass der Programmierer, der den Client erstellt, mit der internen Implementierung des Servers vertraut ist (welche Zeichen im URI zulässig sind, wie lang die Länge ist usw.). Muss sein. Daher hat PUT zwangsläufig eine engere Verbindung zum Server. Sofern kein besonderer Grund vorliegt, ist es wünschenswert, die von POST zu erstellende Ressource und den auf der Serverseite zu bestimmenden URI zu entwerfen. [Quelle: Technologien, die das Web unterstützen: HTTP, URI, HTML und REST]

Eine solche Frage fand ich auch, als ich den Unterschied zwischen POST und PUT untersuchte. Ist die PUT-Verarbeitung, die nur in der REST-API aktualisiert wird, angemessen?

Unter Berücksichtigung dieser Inhalte wird POST zum Erstellen neuer Ressourcen und PUT zum Aktualisieren von Ressourcen verwendet.

DELETE Wenn der Client eine unnötige Ressource löscht, sendet er eine DELETE-Anforderung an diesen URI. Senden und löschen Sie die Ressource.

Das ist alles über die einheitliche Oberfläche.

Bonus Was ist CRUD?

Clad (CRUD) sind die vier Hauptfunktionen, die für das System erforderlich sind. Arrangierte Begriffe wie "Erstellen", "Lesen", "Aktualisieren" und "Löschen"

Von den HTTP-Methoden erfüllen GET, POST, PUT, DELETE "CRUD"

CURD Name Bedeutung Methode
Create Erstellen POST/PUT
Read Lesen GET
Update aktualisieren PUT
Delete Löschen DELETE

Bonus Bonus Über Rails-Ressourcen

In Rails können Sie wie folgt schreiben.

config/routes.rb


Sampleapp::Application.routes.draw do
  resources :users
end

Und dieser Code definiert das folgende Routing

URL Aktion HTTP-Methode Bewegung
/users index GET Bildschirm Benutzerliste anzeigen
/users create POST Benutzerregistrierungsprozess
/users/new new GET Bildschirm zur Benutzerregistrierung anzeigen
/users/1/edit edit GET Benutzerbearbeitungsbildschirm anzeigen
/users/1 show GET Bildschirm mit Benutzerdetails anzeigen
/users/1 update PATCH Benutzeraktualisierungsprozess
/users/1 update PUT Benutzeraktualisierungsprozess
/users/1 destroy DELETE Benutzerlöschvorgang

Es ist praktisch, RESTful nur mit diesem Code unterstützen zu können.

Recommended Posts