Próbuję zintegrować aplikację Angular 2 z obsługą Java Spring Boot. Na chwilę obecną umieszczam moje pliki Angular 2 pod numerem src/main/resources/static
(co oznacza, że zarówno aplikacje Angular, jak i Spring działają w tej samej aplikacji na tym samym porcie).Angular 2 HTTP GET 404 Nie znaleziono dla adresu URL
Próbuję zrobić HTTP GET tak:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Language } from '../model/language';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
@Injectable()
export class LanguageService {
constructor(private http: Http) { }
private langUrl = 'api/languages';
getLanguages() : Observable<Language[]> {
return this.http.get(this.langUrl)
.map((res:Response) => res.json())
}
}
ja celowo usuwany kod z dostać obsługa błędów, ponieważ prowadzi do mylące błąd. Co pojawia się:
Error: Uncaught (in promise): Error: Error in :0:0 caused by: Response with status: 404 Not Found for URL: api/languages
Error: Error in :0:0 caused by: Response with status: 404 Not Found for URL: api/languages
at ViewWrappedError.BaseError [as constructor] (http://localhost:8000/node_modules/@angular/core/bundles/core.umd.js:1179:31) [angular]
at ViewWrappedError.WrappedError [as constructor] (http://localhost:8000/node_modules/@angular/core/bundles/core.umd.js:1232:20) [angular]
at new ViewWrappedError (http://localhost:8000/node_modules/@angular/core/bundles/core.umd.js:6552:20) [angular]
//more output here - will provide full stack trace if needed
URL http://localhost:8080/api/languages
jest obsługiwana przez kontroler Wiosna Java i działa jeśli ja rozumiem przez Postman lub przeglądarki internetowej.
Mam wrażenie, że 404 Błąd nie pochodzą z serwera, ponieważ:
- Nie widzę żadnej aktywności w dziennikach serwerów
- uzyskać ten sam wynik niezależnie od tego czy jest się po stronie serwera lub na dół.
Myślę, że coś jest nie tak z moją konfiguracją Angular 2, ale nie znajduję żadnych wskazówek w dokumentacji.
Próbowałem różnych adresów URL, jak http://localhost:8080/api/languages
, /api/languages
, api/languages
, another/working/server/endpoint
- wszystko to prowadzi do tego samego błędu.
Próbowałem nawet użyć JSONP zgodnie z opisem here, ale dostałem inny problem, który JSONP nie został wstrzyknięty do konstruktora Language Service (to chyba inny temat, jak sądzę).
Znalazłem similar question, ale na razie nigdy nie otrzymałem odpowiedzi.
Jeśli masz jakieś pomysły, jak rozwiązać ten problem lub napotkałeś podobny problem - każda pomoc lub komentarz zostanie wysoko oceniony.
Dziękuję
Wystarczy dodać, że można skonfigurować api interfejsu WWW w pamięci, aby przekazywał adresy URL, które nie powinny być przetwarzane, więc nie trzeba go całkowicie usuwać - patrz [odpowiedź] (http://stackoverflow.com/questions/41076251/how-i-can-by-pass-angle-in-memory-web-api-a-specific-url? Answerertab = aktywny # tab-top) – djboardman
@djboardman, zgadzam się, dobra rada! może być przydatny w rozwoju, gdy nie wszystkie interfejsy API są gotowe. –
Dziękuję za to! Dziękuję za ten wiek, w którym żyjemy! –
cBlaine