通过Angular App和NodeJS向快递服务器发送GET / POST请求时如何修复404 Not Found
Posted
技术标签:
【中文标题】通过Angular App和NodeJS向快递服务器发送GET / POST请求时如何修复404 Not Found【英文标题】:How to fix 404 Not Found when sending GET/POST requests to express server via Angular App and NodeJS 【发布时间】:2019-08-17 07:59:03 【问题描述】:我正在尝试创建一个使用 NodeJS 将 GET 和 POST 请求发送到快速服务器的 Angular 应用程序。
当我为应用程序提供服务时,GET 和 POST 请求本应发送到我的本地服务器,但我在控制台中收到错误消息,此错误记录在下方。
另外,当我访问 localhost:3000 时,服务器正在运行。
这是我的组件类:
import Component, OnInit from "@angular/core";
import RootService from "./root.service";
@Component(
selector: "app-root",
templateUrl: "./root.component.html",
styleUrls: ["./root.component.css"]
)
export class RootComponent implements OnInit
constructor(private rootService: RootService)
ngOnInit()
this.rootService.getAPIData().subscribe(
response =>
console.log("response from GET API is ", response);
,
error =>
console.log("error is ", error);
);
this.rootService.postAPIData().subscribe(
response =>
console.log("response from POST API is ", response);
,
error =>
console.log("error during post is ", error);
);
这里是 root.service.ts:
import Injectable from '@angular/core';
import HttpClient from '@angular/common/http';
@Injectable(
providedIn: 'root'
)
export class RootService
constructor(private http: HttpClient)
getAPIData()
return this.http.get('/api/getData')
postAPIData()
return this.http.post('/api/postData', 'firstName' : 'Code', 'lastName' : 'Handbook')
这是我的服务器代码:
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
app.get('/', (req, res) =>
res.send('Welcome to Node API')
)
app.get('/getData', (req, res) =>
res.json('message': 'Hello World')
)
app.post('/postData', bodyParser.json(), (req, res) =>
res.json(req.body)
)
app.listen(3000, () => console.log('Example app listening on port 3000!'))
我也有这个 proxy.conf.json 文件:
"/api/*":
"target": "http://localhost:3000",
"pathRewrite": "^/api" : ""
当我为我的应用提供服务时,我会在控制台中获得以下输出:
错误是 Object headers: …, status: 404, statusText: "Not Found", url: "http://localhost:4200/api/getData", ok: false, name: "HttpErrorResponse", message: "Http failure response for http://localhost:4200/api/getData: 404 Not找到”,错误:“\n\n\n\n错误\n\n\n
无法获取 /api/getData\n\n\n" root.component.ts:18:8 发布期间的错误是 Object headers: …, status: 404, statusText: "Not Found", url: "http://localhost:4200/api/postData", ok: false, name: "HttpErrorResponse", message: "Http failure response for http://localhost:4200/api/postData: 404 Not找到”,错误:“\n\n\n\n错误\n\n\n无法 POST /api/postData\n\n\n”
有人可以帮我解决这个错误吗?
【问题讨论】:
【参考方案1】:我认为您需要在启动 Angular 应用程序时传入 proxy.conf
的路径。
参考:https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md
【讨论】:
【参考方案2】:您的配置应如下所示:
"/api":
"target": "http://localhost:3000",
"pathRewrite":
"^/api": ""
【讨论】:
嗨,我已经更新了我的 proxy.cons.json 但不幸的是我仍然遇到同样的错误 你是否在你的 webpack 配置中包含了这个? 你是用这个命令启动的吗?:ng serve --proxy-config proxy.conf.json
我的 package.json 中有 "start": "ng serve --proxy-config proxy.conf.json",
devTools 中有什么?如果您将带有/api
的路由添加到您的节点服务器 - 是否会收到您的请求?您的 HTTP 客户端使用什么端口发送请求?【参考方案3】:
1.首先在根目录下创建一个文件 "proxy.config.json" 并在里面添加这些行:
"/api/*":
"target": "http://localhost:3000",
"secure": false,
"logLevel": "debug"
2。在脚本下的“angular.json”上:
"start": "ng serve --proxy-config proxy.config.json",
3.在终端上写“npm start”
note: Don't write "ng serve" , it won't run proxy configuration file.
【讨论】:
以上是关于通过Angular App和NodeJS向快递服务器发送GET / POST请求时如何修复404 Not Found的主要内容,如果未能解决你的问题,请参考以下文章
通过 Observable 从 Angular 向 nodejs 发送 POST 请求
在开发中设置用于从 Angular 向 NodeJS 发送 API 请求的服务器端口
在客户端 (Angular) 和服务器 (NodeJs) 上共享 Objectdefinition