Sollte eine Website eine eigene öffentliche API verwenden?

31

Ich fange an, einen Webservice zu schreiben, und habe mit nodeJS und einem RESTfulish-Ansatz gebaut.

Soweit ich weiß:

  • Der Vorteil ist, dass Sie keinen Code duplizieren müssen.
  • Die Nachteile sind, dass Sie:
    • aktualisiert die öffentliche API häufig, sollte jedoch mit der Versionierung behoben werden
    • kann nicht wirklich dienstspezifische Zwischenspeicherung und Optimierungen vornehmen

Was gilt als Best Practice? Verwenden Websites wie Stack Exchange, Github, Twitter usw. ihre eigenen APIs für ihre Kunden?


quelle
12
Wenn Sie Ihr eigenes Hundefutter essen, verbessern Sie auch Ihre öffentliche API
Ben Brocka
So macht es Amazon.
OliverS
2
Weitere Informationen zu OlverS finden Sie unter Google Platforms Rant
Brian,

Antworten:

37

Sie sollten unbedingt Ihre eigene API verwenden. Dieses Konzept ist allgemein als Hundefutter bekannt und bietet viele Vorteile, die über die Vermeidung von Code-Duplizierungen hinausgehen.

  • Konsistentes Verhalten zwischen Ihrer Website / Ihrem Produkt und dem, was API-Kunden schreiben (dh ihre Erwartungen an Ihre API)
  • Eine andere Form des Testens.
  • Sie können und werden Fehler in der API finden, bevor dies Ihre Kunden tun, wodurch ihre Lösungen weniger kosten.

Obwohl ich gegen einen Ihrer Punkte argumentieren würde: Sie sollten nicht die API häufig zu aktualisieren sein. Nehmen Sie sich Zeit, um eine API zu entwickeln und zu testen, die noch eine Weile Bestand hat. Glücklicherweise wird Hundefutter auf diese Weise dies erzwingen. Wo Sie zuvor den Kundencode gebrochen hätten, brechen Sie jetzt Ihren eigenen Code. Wenn Sie müssen , ist ja Versionierung eine Lösung, aber es sollte vermieden werden.

Steven Evers
quelle
0

Aus irgendeinem Grund kann ich mich nicht als Poster der Frage anmelden, aber ich war es. Ich kann Ihre Antwort nicht akzeptieren, wünschte, ich könnte, es macht viel Sinn.

Wie können Sie jedoch Ihre API nicht aktualisieren? Was ist mit dem Hinzufügen neuer Funktionen, Entfernen unbeliebter Funktionen, Umgestalten usw.?

stanm87
quelle
Hallo. Dies sollte ein Kommentar zu seiner Antwort sein - aber ich denke nicht, dass Sie genug Repräsentanten haben, um einen Kommentar abzugeben. Auf jeden Fall sollten Sie die API nicht häufig aktualisieren . Und selbst dann ist das Hinzufügen neuer Funktionen kein Problem - es kann vorhandenen Code nicht beschädigen. Warum unbeliebte entfernen? Stellen Sie sicher, dass sie veraltet sind, und entfernen Sie sie zu einem späteren Zeitpunkt, nachdem die Benutzer lange auf die veraltete Funktion reagiert haben.
Max
2
Das Hinzufügen von Methoden zu einer API ist in Ordnung. Das Ändern einer vorhandenen API ist schlecht, da dadurch jeder Code beschädigt wird, der von der API abhängt.
Bryan Oakley
@ stanm87: Max und Bryan haben es gut gesagt. Sie sollten es vermeiden, den Vertrag Ihrer API zu ändern (d. H. Die Benutzeroberfläche und das erwartete, funktionierende Verhalten). Die Leute werden darauf angewiesen sein, wenn sie Ihre API verwenden und wenn Sie sie ändern, wird ihr Code beschädigt.
Steven Evers
vielen dank für die klärung. @Max Ich kann seine Antwort in der Tat nicht kommentieren
stanm87