Ich baue eine Webanwendung, die mehrere meiner Kunden Websites betreiben wird. Es beinhaltet auch eine Rest-API. Wäre es klug, wenn die PHP-Websites meiner Kunden die API verwenden, anstatt direkt den PHP-Code aufzurufen, den ich habe. Mir wurde gesagt, dass es den Einsatz für Kunden vereinfachen würde, deren Websites nicht auf meinem Server sind, aber ich sehe keinen Vorteil. Mir wurde auch gesagt, dass es helfen würde, unseren Code zu schützen, wieder sehe ich nicht die Vorteile davon, da der Client nur Zugang zu den Basis-Active-Record-Modellen hätte. Ich habe kein Problem mit der Verwendung von Curl. Mein Problem ist, dass im Moment alle meine Kunden-Websites auf meinem Server gehostet werden. Ich denke nicht, dass es effizient ist, eine Anfrage an den Server zu senden, nur damit der Server eine Lockenanforderung an sich selbst sendet, um diese Anfrage zu erfüllen. Jede Meinung wird sehr geschätzt.Soll ich Curl verwenden, um meine eigene API zu konsumieren?
Antwort
Ich denke, das ist ein gutes Modell, auch wenn Sie den Overhead von PHP zweimal aufrufen. Dieser Aufwand ist echt! Eine Alternative ist, dass, wenn Ihre API gut funktioniert und Sie sie korrekt mit Request/Response-Objekten erstellt haben (anstatt sich direkt auf globals, superglobals, php: // input, header() usw. zu verlassen), dann kann auch einen "gefälschten HTTP-Client" erstellen, der lokal denselben PHP-Code aufruft.
Im Wesentlichen sollten die Websites meiner Kunden lokalen Code verwenden können, und wenn dieser nicht verfügbar ist, ruft er die API auf? –
Nein, ich sage, dass es aus der Perspektive der Client-Website aussehen und sich wie eine HTTP-Anfrage anfühlen sollte, während Sie in Wirklichkeit Anforderungs-/Antwort-Objekte vortäuschen, die eine HTTP-Anfrage vortäuschen, aber in Wirklichkeit Ihre API-Quelle einrichten und einen lokalen Anruf tätigen. – Evert
Wenn das für Sie keinen Sinn ergibt, tun Sie einfach HTTP-Anfragen und kommentieren Sie hier in einem Jahr, wenn Sie Leistungsprobleme bekommen;) – Evert
Es ist vollkommen in Ordnung, ein System zu erstellen, in dem Sie auch Ihre eigene API konsumieren. Diese Lösung ist skalierbar und Sie stellen sicher, dass potenzielle Kunden standardisierte API verwenden, die Sie auch verwenden. Wie Sie vielleicht bemerkt haben, handelt es sich jedoch eher um eine Designfrage als um eine direkte Programmierfrage, so dass sie aufgrund von Offtopics geschlossen sein könnte. –
Ähnliche Programmierer.SE: [Sollte ich meine eigene öffentliche API für meine Webschnittstelle verwenden?] (Http://programmers.stackexchange.com/questions/302028/should-i-use-my-own-public-api-for -my-web-interface) – HPierce
Curl ist gut, was noch besser ist, wenn Sie Ihren Kunden eine Wrapper-Bibliothek rund um die API-Aufrufe zur Verfügung stellen. Auf diese Weise müssen Benutzer nicht über die Mechanismen der API Bescheid wissen und wenn Sie jemals brechende Änderungen vornehmen müssen, können Sie möglicherweise den Wrapper aktualisieren, anstatt alle Clients den Code ändern zu müssen, der von Ihrer API abhängt. –