Festlegen einer globalen REST-Root-URL in einer Backbone.js-Anwendung

7

In backbone.js müssen Sie die Wurzel jedes Modells manuell setzen. Gibt es eine Möglichkeit, dies einmal an einem einzigen Ort einzurichten, und alle Modelle werden es verwenden?

Für z. api.site.com wird der REST-Dienst sein, aber zu Testzwecken kann es sich um localhost:1000 handeln. Ich muss in der Lage sein, die Wurzel-URL des Dienstes einfach zu ändern und sie nicht überall in den vielen vorhandenen Modellen zu haben die Anwendung.

    
Shawn Mclean 28.04.2012, 16:51
quelle

7 Antworten

2

Nicht sicher, was genau Sie meinen, indem Sie urlRoot für jedes Modell manuell setzen. Vermutlich machst du

%Vor%

richtig? Dann hat jede Modellinstanz natürlich dieselbe urlRoot . Eine andere Modellinstanz von zB MyOtherModel hätte eine andere urlRoot .

Wenn Sie aus irgendeinem Grund dieselbe urlRoot verwenden müssen, würde ich vermuten, dass die Modelle Attribute gemeinsam nutzen. Dies sollte Hinweise auf Vererbung oder Erweiterung geben, damit Sie Folgendes tun können:

%Vor%     
ggozad 28.04.2012, 21:42
quelle
12

Ich habe mit der elegantesten Art und Weise gespielt, dies zu tun, wenn ich Backbone mit AMD (require.js) verwende. Das ist es, was ich mir ausgedacht habe, und wie das beste [bisher].

Zuerst laden Sie die Daten wie beschrieben hier .

index.htm (Eingangspunkt für Anwendungen)

%Vor%

Definieren Sie als Nächstes eine Basisklasse für Backbone-Modelle wie folgt:

js / models / Base.js (beachten Sie, dass dieser Modulname mit dem Modulnamen in der obigen Konfiguration übereinstimmt)

%Vor%

Erweitern Sie abschließend alle Backbone-Modelle von dieser Basis wie folgt:

js / models / User.js

%Vor%

Dies ist tangential mit einer früheren Frage verbunden, die ich hatte bezüglich Backbone und Require.JS.

Weiterführende Literatur: Ссылка

    
Bart 20.03.2013 16:05
quelle
8

Was ich verstehe, ist:

Sie haben mehrere Modelle: model1 und model2

Die Stamm-URL kann entweder http://api.site.com oder http://localhost:8080 sein, abhängig davon, ob Sie lokal oder extern arbeiten. Und irgendwann könnte es http://api.anothersite.com

sein

Ich würde dann so etwas tun:

%Vor%

Aber sei vorsichtig damit, vielleicht vergisst du, beim Commit von einer URL auf die andere zu wechseln. Besser ist es, relative Pfade zu behandeln, wenn sie angewendet werden.

    
Augustin Riedinger 14.11.2012 11:19
quelle
2

Meiner Meinung nach ist dies am besten, indem Sie die Backbone.sync -Methode überschreiben und Ihre Root-URL dort voranstellen. Dies liegt daran, dass es nicht Aufgabe des Modells ist, die API-Domäne zu kennen.

%Vor%

Und dann können Sie Ihre Modelle so erstellen, wie Sie es normalerweise tun würden:

%Vor%

Ich verwende diese Methode, um eine .json Erweiterung an alle URLs anzuhängen, um zu verhindern, dass JSON durch den Browser-Cache blinkt.

    
Koen. 22.05.2015 11:39
quelle
2

Angepasst von Ссылка

%Vor%     
mwhite 26.01.2016 21:18
quelle
0

Starten Sie einfach Ihre URL von '/' . Somit sind Sie weder auf localhost noch auf echte Domains angewiesen.

    
rock_walker 05.05.2014 21:08
quelle
0

Das ist wirklich ein alter Post, aber ich denke, dass meine Version für jemanden nützlich sein kann. Ich benutze Backbone mit require.js und meine Server-Seite und Client-Seite komplett getrennt. Ich gebe zu wissen, für die Client-App, wo ist API-Root zur gleichen Zeit, wenn ich requirejs Skript erklären:

%Vor%

und dann gehe ich in mein Backbone-Modul:

%Vor%

Das ist der eleganteste Weg, den ich finden konnte.

    
Igor Benikov 08.12.2016 16:17
quelle

Tags und Links