【发布时间】:2017-06-14 20:39:34
【问题描述】:
我正在尝试将 Angular 2 应用程序与 Java Spring Boot 后端集成。目前,我将 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 控制器处理,如果我通过 Postman 或 Web 浏览器进行 GET,它就可以工作。
我的印象是 404 错误不是来自服务器,因为:
- 我在服务器日志中看不到任何活动
- 无论服务器端是启动还是关闭,我都会得到相同的结果。
我认为我的 Angular 2 配置有问题,但我在文档中没有找到任何提示。
我尝试了不同的网址,例如 http://localhost:8080/api/languages、/api/languages、api/languages、another/working/server/endpoint - 都导致相同的错误。
我什至尝试按照here 的描述使用 JSONP,但我遇到了一个不同的问题,即 JSONP 没有注入到语言服务构造函数中(我猜这个问题是另一个主题)。
我找到了similar question,但至今无人回答。
如果您对如何解决此问题有任何想法或遇到类似问题 - 任何帮助或评论将不胜感激。
谢谢
【问题讨论】:
-
这里有一篇简单的文章来解决这个问题blog.almightytricks.com/2020/10/14/…
标签: angular typescript