Meine Angular 1.5.8 Web-Anwendung ist um http://www.example.com/foo/
und meine RESTful Liste von Bars ist um http://www.example.com/foo/api/bars
. Wenn ui-router zur Liste der Bars in Angular geht, ist mein Browser unter http://www.example.com/foo/#/bars
. Ich möchte einfach eine Verbindung zu einer RESTful-Ressource herstellen, um eine Verbindung zu http://www.example.com/foo/api/bars
über HTTP GET
herzustellen.
Also versuche ich, die naheliegendste Sache:
$resource("api/bars/")
In meinem Kopf, dass api/bars/
auf den aktuellen Pfad mir http://www.example.com/foo/api/bar
http://www.example.com/foo/#/bars
zu geben, richtig lösen soll? Aber es funktioniert nicht (obwohl ich schwören könnte, es funktionierte mit $http
). Stattdessen gibt es mir einen $resource:badcfg
Fehler.
Angular lässt mich folgendes tun, aber dies den richtigen Pfad nicht produzieren, sondern gibt mir http://www.example.com/api/bars
:
$resource("/api/bars/")
Also versuche ich $browser.baseHref()
, aber das scheint auf die leere Zeichenfolge gesetzt werden (warum ?), http://www.example.com/api/bars
wieder produzieren.
$resource($browser.baseHref() + "/api/bars/")
Ich versuchte $location.path()
zu verwenden, aber Angular denkt, dass ich nach dem Rautezeichen, den Pfad will, so dass nicht funktioniert, mir geben. Do!
$resource($location.path() + "/api/bars/")
Wie kann ich api/bars/
auf den Basispfad der aktuellen URL http://www.example.com/foo/#/bars
, produziert http://www.example.com/foo/api/bars
(oder auch nur den Pfad) einfach lösen?
Beachten Sie, dass es nicht akzeptabel für mich zu hart Code ist ein absoluter Pfad oder meinen HTML-Code zu ändern. Warum sollte ich? Außerdem wird diese Anwendung an zwei Stellen auf dem gleichen Server (hey, es ist einfach mit Java, Tomcat und JAX-RS), unter http://www.example.com/foo/
und http://www.example.com/foo-demo/
. Die Anwendung sollte unter jedem Standort unverändert ausgeführt werden und auf die RESTful-API-Liste der Balken unter http://www.example.com/foo/api/bars
bzw. http://www.example.com/foo-demo/api/bars
zugreifen.
Dies ist nicht kompliziert; Dies ist eine einfache "URI-Syntax 101", die in RFCs seit über zwei Jahrzehnten beschrieben wurde. Ich möchte einfach api/bars/
in den Basispfad der aktuellen URL http://www.example.com/foo/#/bars
auflösen. Wie mache ich das in Angular 1.5?
Das ist in Ordnung und es hat auch eine wertvolle Information, dass nicht nur das Array-Objekt-Problem ein Grund für den Fehler sein kann, den Sie erhalten haben. –