Angular 2 HTTP GET 404 introuvable pour l'URL
Je suis en train d'intégrer Angulaire 2 application avec Java Spring Boot backend. Pour le moment, je place mon Angulaire 2 fichiers sous src/main/resources/static
(ce qui signifie à la fois Anguleux et le Printemps applications s'exécutent witin la même application sur le même port).
Je suis en train de faire HTTP GET comme ceci:
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())
}
}
J'ai volontairement supprimé code de gestion d'erreur à partir de l'obtenir, parce qu'elle conduit à l'erreur trompeur.
Ce que je reçois est:
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
L'URL http://localhost:8080/api/languages
est gérée par Java Spring contrôleur et il fonctionne si je ne REÇOIS via Postier ou un Navigateur Web.
Mon impression est que l'Erreur 404 n'est pas venu depuis un serveur, parce que:
- Je ne vois pas d'activité dans les logs du serveur
- J'obtiens le même résultat, peu importe si le serveur vers le haut ou vers le bas.
Je pense qu'il ya quelque chose de mal avec mon Angulaire 2 configuration, mais je ne trouve pas du tout dans les conseils de la documentation.
J'ai essayé différentes url, comme http://localhost:8080/api/languages
/api/languages
api/languages
another/working/server/endpoint
- conduisent toutes à la même erreur.
J'ai même essayé d'utiliser JSONP comme décrit icimais j'ai une autre question que JSONP n'a pas été injecté à la Langue de Service du constructeur (cette question est un sujet différent, je suppose).
J'ai trouvé un question similairemais il n'a jamais été répondu à ce jour.
Si vous avez des idées sur la façon de résoudre ce problème ou expérimenté le même problème - de l'aide ou commentaire sera fortement appréciée.
Merci
source d'informationauteur mp_loki
Vous devez vous connecter pour publier un commentaire.
La raison de cette erreur est que j'ai utilisé Angulaire de la Tour des Héros application reposant comme base pour le mien, et je n'ai pas enlever la dépendance
et
InMemoryWebApiModule
à partir de l'app.le module.ts. De ce fait, toutes les demandes ont été interceptés par InMemoryWebApiModule (malgré que je n'ai pas l'appeler directement comme décrit dans la Tour des Héros Tutoriel), c'est pourquoi je n'ai pas vu XMLHttpRequests dans "Réseau" de l'onglet du navigateur débogueur.Après, j'ai enlevé la dépendance de
package.json
etnode_modules
répertoire, il a commencé à travailler normalement, cependant, j'ai dû changer le code de la fonction pour parser Json directement à la Machine les objets comme ceci:C'est une erreur de débutant, mais j'espère que ce post va sauver un couple d'heures de recherche à quelqu'un.
J'ai eu un problème similaire, après quelques frustrant recherches, j'ai résolu l'erreur 404 grâce à cette. L'ordre des importations questions.
Espérons que cela aide quelqu'un.
Dans Chrome ou Firefox, vous pouvez voir les requêtes et réponses HTTP exécution de votre application (il suffit de frapper la touche F12 et sélectionnez l'onglet Réseau). Puisque vous dites qu'il fonctionne avec votre navigateur ou de votre Facteur, vous pouvez comparer les deux demandes et devrait rapidement trouver la différence.