Wie soll eine HTTP-API aufgerufen werden, die nicht REST-konform ist? [geschlossen]


24

Wie würden Sie eine auf HTTP basierende API nennen, die URI zur Benennung von Ressourcen und HTTP-Verben (PUT, POST, DELETE, GET ...) zur Manipulation dieser Ressourcen verwendet?

Laut Roy Fieldings Beschwerden handelt es sich nicht um REST, da es kein Hypermedium gibt.

Intern nennt es in meinem Team jeder "REST-API". Ich nenne es "REST-like", aber es ist nicht beschreibend und seine Bedeutung ist unscharf. Ich bin ziemlich verwirrt darüber, da es große Meinungsverschiedenheiten über REST gibt. Ich möchte nicht an Flammenkriegen teilnehmen, sondern nur die richtigen Begriffe verwenden.


6
Wie viel Zeit verbringst du bei der Arbeit mit dem Programmieren und wie viel Zeit verbringst du damit, dich für eine Terminologie zu entscheiden? Angenommen, Sie veröffentlichen ein großartiges Produkt, haben jedoch in einigen internen Dokumenten eine leicht falsche Terminologie verwendet. Würden sich Ihre Kunden darum kümmern?
Brandin

3
Wie du es nennst und wie du es nennst, sind zwei verschiedene Dinge.
JeffO

13
Berechtigt diese Frage wirklich den Schnupfen und die Skepsis, die sie in den Kommentaren hervorruft? Es scheint kaum unverschämt zu sein, einen anständigen, allgemein verständlichen Weg zu wollen, um von einem ziemlich hochrangigen, häufig verwendeten Konzept zu sprechen.
Ben Aaronson

6
@Brandin, Worte bedeuten Dinge. Bis ich einen USB-Stick an Ihr Gehirn anschließen und meinen Code sofort herunterladen kann, muss ich Etiketten und Terminologie verwenden, um meine Bedeutung mitzuteilen. Wenn ich "SOAP HTTP API" sage, bedeutet das etwas ganz anderes als "REST HTTP API". Dinge zu benennen ist ein schwieriges Problem und auch ein wichtiges.
Paul Draper

6
Seien Sie bereit, dieses Thema mit Ihrem Team aufzugeben, wenn Sie das nächste Mal dieses Thema ansprechen, und Widerstand dagegen zu leisten. Ich bin der Typ von Person, dem es wichtig ist, dass wir die richtige Terminologie verwenden, damit es weniger Möglichkeiten für Missverständnisse gibt. Viele Leute denken nicht so und nehmen es sogar als Angriff auf ihre Intelligenz, wenn Sie versuchen, ihre Wort- / technischen Entscheidungen zu bewerten. In diesem Fall ist es einfach nicht wert, darüber zu streiten. Wenn Sie ein Neurotikum (oder mehr) in Ihrem Team haben und es der Vorstellung widersteht, dass es eigentlich kein REST macht, ist es am besten, es aufzugeben.
Ravenstine

Antworten:


43

Nennen Sie es eine HTTP-API .

Es entspricht den HTTP-Standards und enthält keine weiteren Ebenen (z. B. SOAP).

Die HTTP-Standards definieren Ressourcen, Verben, Überschriften, Inhaltsverhandlungen usw.

REST (REpresentational State Transfer) ist eine Architektur mit Anforderungen, die für vorhandene HTTP-Standards geeignet sind, HTTP funktioniert jedoch alleine.


Nach meiner Erfahrung sollten sich 90% der "REST-HTTP-APIs" "nur" eine HTTP-API nennen.

Schämen Sie sich nicht, auf das REST-Label zu verzichten. Wie bei Microservices und nicht relationalen Datenbanken müssen Sie keine RESTful-API haben, um cool zu sein. Roy machte sich daran, die langlebigste, abwärtskompatibelste und vernetzteste Anwendungsarchitektur zu entwickeln, die er konnte. Er hat gute Arbeit geleistet. Aber nicht alles braucht mehr als 40 Jahre Kompatibilität.


6
"Meiner Erfahrung nach sollten sich 90% der" REST-HTTP-APIs "" nur "eine HTTP-API" nennen. +1
Artur Gaspar

Ich konnte nicht mehr zustimmen. Wo ich derzeit arbeite, erstellen wir eine hochmoderne Client-Server-Benutzeroberfläche mit einem hochmodernen Anwendungsframework in einem schnellen Entwicklungszyklus. Es gibt nichts RUHIGES daran; Wir verwenden nur POST. Es ist nicht im Trend, aber es erledigt die Arbeit und es erledigt sie sehr gut. Es ist einer der saubersten Codes, die ich je gesehen habe.
Robert Harvey


8

Hypermedia wurde mit REST-ähnlichen APIs nie wirklich populär - bis zu dem Punkt, dass der Begriff RESTful nicht ausreicht, um eine API von anderen "RESTful" -Web-APIs zu unterscheiden, wenn eine API tatsächlich Hypermedia-Navigation implementiert. REST ist zu einem Sammelbegriff geworden, oder es wurden ressourcenbasierte Web-APIs und neue Namen wie die Hypermedia-API entwickelt  , um sich auf das Hypermedia-Konzept zu konzentrieren.

Ich möchte nicht wirklich die Verwendung falscher Begriffe befürworten, aber ich denke, dass die allgemeine moderne Interpretation von REST für die meisten Menschen einfach die Verwendung einheitlicher URLs und HTTP-Verben bedeutet. Es ist nicht korrekt, aber jeder, der die Fieldings-Definition kennt, sollte auch wissen, dass viele andere dies nicht wissen. Andererseits weiß jeder, der REST nur durch Beobachtung der Implementierung vorhandener "RESTful" -APIs kennt, nicht, wovon Sie sprechen, wenn Sie weniger bekannte REST-Einschränkungen wie HATEOAS oder On-Demand-Code erwähnen. Fielding mag es vielleicht nicht, aber ich denke, es ist zu spät, zur ursprünglichen Definition zurückzukehren *. Und seien wir ehrlich: Wenn Sie jemanden zum ersten Mal über seine REST-API sprechen hören, gehen Sie sofort davon aus, dass sie keine Hypermedien enthält, nicht wahr?

Das Beharren auf der korrekten Definition von RESTful schafft normalerweise nur zusätzliche Verwirrung. Wie bei vielen Begriffen, die ihre Bedeutung im Laufe der Zeit geändert haben oder die die Massen einfach falsch übernommen haben, weiß ich zu schätzen, dass jemand die ursprüngliche Definition kennt, aber ich würde niemanden korrigieren, der die umfassendere moderne Interpretation von REST verwendet.

* und auch zu spät, um neue Begriffe für REST-ähnliche Nicht-Hypermedia-APIs festzulegen. Wie sollen wir sie überhaupt anrufen? ... RESTISH ?


1
Die API von Github enthält viele Hypermedien. Ich weiß nicht, wie typisch das ist. Ich stimme Ihnen zu, dass der Begriff "RESTful" der Kontrolle von Fielding entgangen ist, um mehr Dinge zu erfassen.
dcorking

2

Es ist eine CRUD-Schnittstelle (Erstellen, Lesen, Aktualisieren, Löschen) über HTTP.

Ich kann mir keine Behörde vorstellen, die diese Behauptung bestätigt, und hoffe, dass Sie mehr und bessere Antworten erhalten.


4
Etwas RESTful würde auch zu dieser Definition passen.
Blrfl

1
@Blrfl AFAICT Einige RESTful APIS wären Supersets davon. Die Definition von Fielding würde nicht erfüllt, wenn die Datensätze keine Hyperlinks enthalten.
dcorking

2

Sie können es so nennen, wie Sie möchten. Die Leute tendieren dazu (fast religiös), sich an irgendeinen Teil der REST-Spezifikation zu halten, den Sie nicht befolgen, und verwenden dies als einen Protestpunkt, der der Entwicklung sehr abträglich ist. Die einfache Tatsache ist jedoch, dass es (fast) keine Services gibt, die echten REST für ihre API-Serves implementieren.

In unserem Team haben wir Stateless APIin der Entwicklungsphase unseren Namen angegeben, da wir eine veraltete Stateful- und Functional-SOAP-API hatten, die wir ersetzten (die veraltete API selbst hatte auch nie einen vereinbarten und aussagekräftigen Namen, damit wir uns nicht zu sehr mit Namen beschäftigten ).

Jetzt hat dieses Projekt nur noch eine API, die einfach aufgerufen wird the <project> API. Wenn wir es irgendwann ersetzen, wird die neue API einfach als bekannt sein the new <project> API.

Es ist fast bedeutungslos, ihm einen ausgefallenen und beschreibenden internen Namen zu geben, es sei denn, Sie haben so viele APIs, dass Sie diese von den anderen unterscheiden müssen (in diesem Fall sollten Sie wahrscheinlich auch alle anderen umbenennen).


Während die ursprüngliche Frage schlecht war, ist diese Antwort ein solider Versuch, die Frage zu beantworten
Michael Shaw

2

Sie können es eine Web-API nennen . Es ist ein sehr weit gefasster Begriff, der es jedoch vermeiden kann, sich mit der Bedeutung anderer API-Typdefinitionen auseinanderzusetzen. Der Begriff ist im Vergleich zu Alternativen wie der HTTP-API weniger technisch und präzise. Dies kann jedoch von Vorteil sein, wenn Sie mit nicht-technischen Personen sprechen.

Dieser Begriff wird auch von Leonard Richardson verwendet (der das bereits erwähnte Richardson-Reifegradmodell definiert hat - ein akzeptiertes Maß dafür, wie nahe eine API an einer REST-Architektur liegt). Dies erhalten Sie, wenn Sie den Teil "RESTful" einer " RESTful-Web-API " löschen .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.