私はAngular 2アプリケーションをJava Spring Bootバックエンドと統合しようとしています。現時点では、私はAngular 2ファイルをsrc/main/resources/static
の下に置きます(AngularとSpringの両方のアプリケーションが同じポート上で同じアプリケーションで実行されることを意味します)。角2 HTTP GET 404が見つかりませんURL
私がやろうとしています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())
}
}
私は意図的に、取得からのエラー処理コードを削除しました。私は何を得る は次のとおりです。
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の春コントローラによって処理され、私はポストマンやWebブラウザ経由でGETならば、それは動作します。
私の印象はので、404エラーは、サーバーから来ていなかったということです。私は、サーバーのログ
- サーバ側はアップかである場合、私は関係なく、同じ結果を得ますダウン。
私のAngular 2構成には問題があると思いますが、ドキュメントには何もヒントがありません。
http://localhost:8080/api/languages
、/api/languages
、api/languages
、another/working/server/endpoint
などの異なるURLを試しましたが、すべて同じエラーにつながります。
私はさらにhereのようにJSONPを使用しようとしましたが、JSONPが言語サービスコンストラクタに挿入されていないという別の問題がありました(その問題は別の話です)。
私はsimilar questionを見つけましたが、これまでに決して答えられませんでした。
この問題の解決方法や類似の問題が発生した場合は、ヘルプやコメントをいただければ幸いです。
は(単にF12を押すと、[ネットワーク]タブを選択します)あなたがHTTPリクエストとレスポンスをあなたのアプリケーションの実行を見ることができるクロムまたはFirefoxで
これを追加するには、メモリ内のWeb APIを処理したくないURLを通過するように設定することができます。そのため、削除する必要はありません。この[answer](http://stackoverflow.com/questions)/41076251/how-i-can-bypass-angular-in-memory-web-api-for-a-specific-url?answertab = active#tab-top) – djboardman
@djboardman、私は同意する、良い点!すべてのAPIが準備できていない場合に開発に役立ちます。 –
ありがとうございます!私たちが住んでいるこの年齢のありがとう! –
cBlaine