Я пытаюсь интегрировать приложение Angular 2 с Java Spring Boot backend. На данный момент я помещаю файлы Angular 2 под src/main/resources/static
(что означает, что приложения Angular и Spring работают с одним и тем же приложением на одном и том же порту).
Я пытаюсь сделать HTTP GET следующим образом:
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())
}
}
Я намеренно удалил код обработки ошибок из get, потому что это приводит к ошибочной ошибке. Я получаю:
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
обрабатывается контроллером Java Spring, и он работает, если я делаю GET через Postman или веб-браузер.
Мое впечатление, что ошибка 404 не поступала с сервера, потому что:
- Я не вижу активности в журналах сервера
- Я получаю тот же результат, независимо от того, идет ли серверная сторона вверх или вниз.
Я думаю, что что-то не так с моей конфигурацией Angular 2, но я не нашел никаких советов в документации.
Я пробовал разные URL-адреса, например http://localhost:8080/api/languages
, /api/languages
, api/languages
, another/working/server/endpoint
- все это приводит к той же ошибке.
Я даже пытался использовать JSONP, как описано здесь, но у меня возникла другая проблема, когда JSONP не был добавлен в конструктор языковой службы (эта проблема отличается тема, я думаю).
Я нашел аналогичный вопрос, но до сих пор он никогда не отвечал.
Если у вас есть идеи по устранению этой проблемы или возникли аналогичные проблемы - любая помощь или комментарий будут высоко оценены.
Спасибо