Wie funktionieren Web-APIs? [geschlossen]

17

Ich habe von vielen Web-APIs wie Facebook, Twitter usw. gehört, mit denen Dritte auf Daten zugreifen und diese manipulieren können. Ich würde gerne wissen, wie eine Web-API funktioniert. Was sind die Grundlagen einer Web-API?

Wenn ich eine API für meine Site erstellen möchte, damit Benutzer darauf zugreifen oder sie aktualisieren können, womit muss ich beginnen?

Harish Kurup
quelle
1
Nicht, dass es von entscheidender Bedeutung ist, aber mit welcher Sprache wurde Ihre Website erstellt?
ocodo
Haben Sie die Dokumentation für die Facebook-Web-API bereits gelesen? developers.facebook.com/docs Wenn Sie es nicht gelesen haben, warum nicht? Wenn Sie es gelesen haben, welche konkreten Fragen haben Sie?
S.Lott
ok sicher, ich werde @ S.Lott tun!
Harish Kurup

Antworten:

23

Im einfachsten Fall erstellen Sie eine Reihe von GET / POST-Anforderungen, die jeder aufrufen und die Informationen zu den URLs, Parametern und Effekten veröffentlichen kann. GET-Anforderungen für schreibgeschützte Aufgaben und POST-Anforderungen für alle Elemente, die Daten auf dem Server ändern .

Fügen Sie bei Bedarf ein Authentifizierungssystem hinzu, und Sie haben eine einfache Web-API.

Eine Web-API ist lediglich eine Schnittstelle , über die über standardmäßige HTTP-Anforderungsmethoden auf Ihr System (z. B. eine Site) zugegriffen werden kann . Die Daten selbst werden normalerweise in einem Standardformat (wie JSON oder XML ) verpackt , um die Handhabung zu vereinfachen.


Hier ist ein Beispiel für eine Web-API für 'TextWise'

Dan McGrath
quelle
in Ordnung. Welches Dat-Format eignet sich am besten für JSON oder XML?
Harish Kurup
1
JSON - XML ​​ist sehr schwer zu manipulieren und bietet keinen Vorteil gegenüber JSON. Und in XML haben Sie großen Overhead, weil Sie schließende Tags haben müssen.
Slawek
1
@ Harish. Wieder einmal ist es einer von denen, die "ganz von Ihrem Zweck / Ihrer Situation abhängen". Während ich vielleicht das JSON-Format vorziehen würde, würde ich XML verwenden, wenn ich es für eines unserer Systeme bei der Arbeit machen würde, da es über eingebaute XML-Parsing-Fähigkeiten verfügt, aber nicht JSON. Dies bedeutet, dass die Pflege des Codes einfacher ist und die anderen Entwickler mit den Befehlen vertraut sind.
Dan McGrath
1
@ Harish, es ist eine gute Idee, einen zu bevorzugen und zuerst freizugeben, aber sowohl XML als auch JSON helfen Ihren Benutzern.
ocodo
In der Praxis werden XML- und JSON-Dateien auf ähnliche Dateigrößen komprimiert. Ich sehe eine allmähliche Tendenz zur Umstellung auf JSON (JSON ist neuer als XML), obwohl es derzeit üblich ist, beides anzubieten. JSON ist ideal für den Datenaustausch, während XML für den Dokumentenaustausch geeignet ist.
Brian
5

Ich entwickle gerade eine API für die Virtualisierungsplattform meines Unternehmens. Sie können auf verschiedene Arten vorgehen, aber mein Favorit (und der schnellste Weg, um etwas zum Funktionieren zu bringen, das die Leute verstehen können) ist die Verwendung einfacher HTTP-GET-Anforderungen und die Rückgabe einer JSON-Antwort.

Meine URLs sehen ungefähr so ​​aus:

domain.com/method/call/subcall?key=key&data=something

Ich zerlege dann die HTTP-GET-Variablen und mache damit, was der Aufrufer will. Einer der Hauptgründe, warum ich mich als Beta-Benutzer für die Stack Exchange-API-Entwicklung angemeldet habe, war, dass ich wusste, dass dies eine großartige Lernerfahrung sein würde, und das war es auch .

Normalerweise resultgebe ich zwei JSON-codierte Arrays zurück, von denen eines nur angibt, ob der Aufruf erfolgreich war, und ansonsten einen Fehlercode / eine Fehlerzeichenfolge ausgibt. Der andere wird normalerweise nur aufgerufen data, und der Inhalt davon wird in der Dokumentation dieses bestimmten Aufrufs beschrieben. Darüber hinaus sind GET-basierte APIs viel einfacher zu testen und zu debuggen.

Es gibt viele andere Formate, wie SOAP / XMLRPC. Ich finde nur, dass die Auswahl von JSON mir eine unglaubliche Einfachheit und Wahlfreiheit bietet.

Wenn ich zum Beispiel viele Felder senden muss und nicht mit einer Menge von GET-Variablen umgehen möchte, kann ich dies einfach tun (Beispiel in PHP)

$to_send = base64_encode(json_encode($some_array));

Das ist auf der anderen Seite leicht zu dekodieren, was mir Dutzende von Variablen zur Verfügung stellt, während ich immer noch nur 2-3 GET-Variablen über die API akzeptiere.

Ich versuche nur, meine Methoden und Aufrufe kurz und prägnant zu halten und sie so zu gestalten, dass jeder Aufruf eine einheitliche "funktionierende oder fehlgeschlagene" Antwort zurückgibt, gefolgt von den angeforderten Daten.

Tim Post
quelle
2

Das ist eigentlich eine sehr breite Frage. Im einfachsten Sinne funktioniert eine Web-API, wenn ein Client (wie ein Webbrowser) eine HTTP-Anfrage an einen Webserver sendet. Der Server prüft diese Anforderung, um herauszufinden, was der Benutzer möchte, und gibt dann Daten in einem bestimmten Format (wie einer Seite) zurück, die der Client dann prüft, um das zu erhalten, was er möchte. Dies sind nur die einzigen Dinge, die Web-APIs gemeinsam haben. Mir ist klar, dass dies Ihre Frage nicht wirklich beantwortet, aber ich wollte einen Grund angeben, warum die Frage so weit gefasst ist.

Es gibt viele Möglichkeiten, wie ein Client seine Anforderung oder eine Antwort eines Servers formatieren kann. Damit dies sinnvoll ist, müssen sich Client und Server auf einige Grundregeln einigen. Im Allgemeinen gibt es heutzutage zwei sehr allgemeine Stile, die für diese Art von Dingen verwendet werden.

Remote Procedure Call (RPC)

In einer API im RPC-Stil gibt es normalerweise nur eine URL für die gesamte API. Sie rufen es auf, indem Sie ein Dokument veröffentlichen, das Informationen zu den gewünschten Aktionen enthält, und der Server gibt das gewünschte Dokument zurück. Im Allgemeinen hat das Anforderungsdokument einen Funktionsnamen und einige Argumente.

Einige Standards für diesen API-Stil umfassen XML-RPC und SOAP. Diese Standards versuchen, ein Format zu erstellen, mit dem Sie die von Ihnen getätigten Funktionsaufrufe oder sogar die gesamte API beschreiben können.

Repräsentative Zustandsübertragung (REST)

In einer API im REST-Stil haben Sie weniger eine URL für die API als einen Namensraum : einen Server oder einen Ordner innerhalb eines Servers, auf dem sich viele verschiedene Objekte befinden, und jede URL in diesem Namespace wird zu einem Teil der API. Anstatt zu sagen Sie den Server , dass Sie die API verwenden möchten, sagt die URL des Servers , was Sie die API verwenden möchten auf . Anschließend verwenden Sie die HTTP-Methode und möglicherweise den Anforderungshauptteil, um zu erklären, was Sie mit diesem Objekt tun möchten : GET (etwas abrufen, das bereits vorhanden ist), POST (etwas Neues erstellen), PUT (etwas ersetzen, das bereits vorhanden ist) oder LÖSCHEN (etwas loswerden, das schon da ist). Es gibt einige andere Verben, die Sie verwenden können, aber diese sind bei weitem am häufigsten.

Bisher habe ich keine Standardformate für REST erwähnt. Theoretisch können Sie nahezu jedes Format verwenden. HTTP bietet bereits die Möglichkeit zu sagen, was Sie tun möchten und wozu Sie es tun möchten. Das Format des Anforderungshauptteils kann also nahezu beliebig sein: eine Darstellung des Objekts, das Sie erstellen oder ersetzen möchten. In der Praxis einigen sich die REST-Autoren jedoch eher auf ein Format, da es schwierig ist, aus jedem möglichen Format einen Sinn zu machen.

Der Löffeligste
quelle