Warum verwenden APIs unterschiedliche URLs? Gibt es zwei verschiedene Schnittstellen auf dem Webserver? Eine Verarbeitung von API-Anfragen und die anderen Web-HTTP-Anfragen? Zum Beispiel könnte es eine Website namens www.joecoffee.com geben, aber dann verwenden sie die URL www.api.joecoffe.com für ihre API-Anfragen. Warum werden hier unterschiedliche URLs verwendet?Warum haben APIs unterschiedliche URLs?
Antwort
Wir trennen uns aus mehreren Gründen, und sie werden nicht immer zutreffen.
Trennung von Bedenken.
Wir schreiben API-Code in einem Projekt und stellen es in einer Einheit bereit. Wenn wir an der API arbeiten, kümmern wir uns nur darum und machen uns keine Sorgen um das Seitenlayout. Wenn wir im Internet arbeiten, ist das völlig separat
Verschiedene Authentifizierungsmechanismen.
Die Art, wie Sie einem Benutzer die Anmeldung mitteilen, unterscheidet sich erheblich davon, wie Sie einem API-Client mitteilen, dass er nicht authentifiziert ist.
Verschiedene Skalierbarkeitsanforderungen
Es könnte sein, dass die API viele komplexe Operationen der Fall ist, während die Bahn-Server mehr oder weniger statischen Inhalt dient. Vielleicht möchten Sie Hunderte von API-Servern auf der ganzen Welt hinzufügen, aber nur 10 Webserver haben.
Verschiedene Clients
Sie könnten eine API für den Web-Client und eine separate API für einen mobilen Client. Oder vielleicht eine öffentliche und eine private/authentifizierte. Dies trifft möglicherweise nicht auf Ihr Beispiel zu.
Verschiedene Technologies
Art einer Verlängerung der Trennung von Bereichen, aber es ermöglicht es Ihnen, Linux-Server für ein und verwenden Sie so etwas wie ein AWS Lambda für den anderen zu haben.
SSL Wrangling
Dies ist eher ein anti-Grund (insbesondere für das spezifische Beispiel Sie geben). Viele Websites verwenden SSL für Web und API. Die meisten Websites verwenden mindestens SSL für die API. Sie neigen dazu, SSL-Zertifikate auf Ihre URL abgestimmt zu haben, so dass ein Grund sein könnte. Das heißt, wenn Sie ein * .joecoffee.com-Zertifikat hätten, würden Sie api.joecoffee.com und nicht www.api.joecoffee.com verwenden (weil anscheinend ein zusätzliches '.' In Ihrer URL mehr kostet, oder so ähnlich).
Wie @james vorgeschlagen - es gibt keine wirklich rechts Antwort und einige Debatte.
- 1. unterschiedliche Antwortdatentypen von REST-APIs
- 2. Warum haben diese beiden float64s unterschiedliche Werte?
- 3. Warum haben diese Ausdrücke unterschiedliche Mehrdeutigkeiten?
- 4. Warum haben diese beiden Vergleiche unterschiedliche Ergebnisse?
- 5. Warum haben zwei identische Bilder unterschiedliche DatenUrls?
- 6. Warum Code und Daten haben unterschiedliche Adressierungsmodus?
- 7. Können unterschiedliche Kafka-Themen unterschiedliche Retentionslängen haben?
- 8. Haben Lambdas unterschiedliche Typen?
- 9. gleichen Code haben unterschiedliche Ergebnisse
- 10. Exportierte Datenbanken haben unterschiedliche Größen
- 11. Warum haben Rebase und Hard Reset unterschiedliche Ergebnisse gebracht?
- 12. xUnit.net: Warum haben diese 2 äquivalenten Tests unterschiedliche Ergebnisse?
- 13. Warum haben parent_id und post_id unterschiedliche Werte in facebook webhook
- 14. Warum haben diese beiden if-Anweisungen unterschiedliche Bedeutungen?
- 15. Warum haben FilterInputStream und FilterOutputStream unterschiedliche Zugriffsmodifikatoren in ihren Konstruktoren?
- 16. Warum haben diese zwei "nicht in" -Abfragen unterschiedliche Ergebnisse?
- 17. Warum haben IDL unterschiedliche Werte in demselben Ausdruck?
- 18. Warum haben SQL INSERT- und UPDATE-Anweisungen unterschiedliche Syntax?
- 19. Clojure: Warum = und .equals auf Strings haben unterschiedliche Leistung?
- 20. Socket.io - warum können nicht alle Benutzer unterschiedliche Namen haben?
- 21. Warum haben dynamische und statische Arrays unterschiedliche Typnamen? (C++)
- 22. Warum haben Listen mit denselben Daten unterschiedliche Größen?
- 23. Warum AVAsset-Tracks unterschiedliche TimeRange für dieselbe Videodatei haben?
- 24. Warum haben Arrays unterschiedlicher Integer-Größen unterschiedliche Leistung?
- 25. mxnet oder keras, warum haben sie unterschiedliche Ergebnisse?
- 26. SAP Warum haben IDocs unterschiedliche Anzahl von Segmenten?
- 27. Warum haben diese Pixel-äquivalenten Elemente unterschiedliche tatsächliche Größe?
- 28. JSON.Stringify gibt unterschiedliche Ergebnisse auf verschiedenen URLs
- 29. Können Zeilen unterschiedliche Spaltenanzahl haben?
- 30. iPhone/Xcode: Können unterschiedliche Projektziele unterschiedliche Paketkennungen haben?
Nicht alle APIs tun das, und ob die eine Technik oder die andere zu verwenden ist, ist [zur Diskussion] (https://stackoverflow.com/questions/14554943/is-it-better-to-place-a-rest -api-on-sub-domain-oder-in-einem-Unterordner) und meinungsbasiert, – James