- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将 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 Controller 处理,如果我通过 Postman 或 Web 浏览器执行 GET,它会起作用。
我的印象是 404 错误不是来自服务器,因为:
我认为我的 Angular 2 配置有问题,但我没有在文档中找到任何提示。
我尝试了不同的 url,例如 http://localhost:8080/api/languages
、/api/languages
、api/languages
, another/working/server/endpoint
- 都会导致相同的错误。
我什至尝试按照描述使用 JSONP here ,但我遇到了一个不同的问题,即 JSONP 未注入(inject)语言服务构造函数(我猜这个问题是另一个主题)。
我找到了 similar question , 但到目前为止从未得到答复。
如果您对如何解决此问题有任何想法或遇到过类似问题 - 我们将不胜感激任何帮助或评论。
谢谢
最佳答案
这个错误的原因是我用了Angular Tour of Heroes应用程序作为我的基础,我没有删除依赖
"angular-in-memory-web-api": "~0.2.4",
和来自 app.module.ts 的 InMemoryWebApiModule
。因此,所有请求都被 InMemoryWebApiModule 拦截(尽管我没有像英雄之旅教程中描述的那样直接调用它),这就是为什么我在浏览器调试器的“网络”选项卡中没有看到任何 XMLHttpRequests 的原因。
我把package.json
和node_modules
目录下的依赖去掉后,就可以正常运行了,但是我不得不改服务代码直接解析Json为像这样的 TypeScript 对象:
getLanguages(): Promise<Language[]> {
return this.http.get(this.langUrl)
.toPromise()
.then(response => response.json() as Language[])
.catch(this.handleError);
}
这是一个新手错误,但我希望这篇文章能为某人节省几个小时的研究时间。
关于找不到 URL 的 Angular 2 HTTP GET 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923209/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!