angular - Angular + Express,GET 请求不起作用
问题描述
基本上,我的 Angular 应用程序应该执行 HTTP-Get 请求,并且 Express 服务器(也托管 Angular 应用程序)应该向 Angular 应用程序发送一个 JSON 对象。不知何故它不起作用,我不知道为什么。即使是我的 Server.js get 方法上的第一个 console.log 也不会被调用。
服务器.js:
var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, '../dist/appTest')));
app.use(bodyParser.json({
limit: '5mb'
}));
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Accept');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.get('*', (req, res, next) => {
res.sendFile(path.join(__dirname, '../dist/appTest/index.html'))
});
app.get("/api/getData", function(req,res) {
console.log("get123");
var testObj = {
"name": "TestName",
"email": "Test@Email.com",
"subject": "TestSubject",
"content": "Some text...",
"answer": [{
"date": newDate(Date.now()).toLocaleString(),
"sender":"Mr.Test",
"answer":"some text.."
}]
}
console.log("get456");
res.json(testObj)
});
app.listen(3000, () => console.log('Server running on port 3000!'));
我正在使用的 Angular 服务:
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
@Injectable({
providedIn: 'root'
})
export class DbConnectorService {
private baseUrl:string = "http://localhost:3000"
constructor(private http: Http) { }
getAllData() {
this.http.get(this.baseUrl + '/api/getData').subscribe((res) => {
console.log(res);
});
}
}
服务中的 console.log 打印出以下内容:
Response {_body: "<!doctype html>↵<html lang="en">↵<head>↵ <meta ch…="main-es5.js" nomodule></script></body>↵</html>↵", status: 200, ok: true, statusText: "OK", headers: Headers
我的目标是通过获取请求将对象“testObj”从服务器获取到 Angular 应用程序(现在在浏览器控制台上打印就足够了)。而且我还想知道为什么控制台中的日志app.get("/api/getData", function(req,res)
不会被打印出来。这是否意味着该路线永远不会被调用?但为什么?
解决方案
定义app.get('*', function()= {})
时,它接受每个 HTTP 请求并通过其回调处理它。我可以从包含文件中 HTML 数据的 api 中看到您的响应,因此在这种情况下,您的 api 处理此块代码,而不是/api/getData
.
app.get('*', (req, res, next) => {
res.sendFile(path.join(__dirname, '../dist/appTest/index.html'))
});
推荐阅读
- node.js - JEST:无法导入提取
- spring-boot - 将swagger接口合并到控制器中可以吗?
- datepicker - Formiojs + Flatpickr 键盘导航问题
- xamarin - Xamarin 网格里面的按钮没有点击
- excel - Copy_Paste_Visible_Cells_Only
- react-native - React-Native 错误 - VirtualizedLists 永远不应嵌套在具有相同方向的普通 ScrollViews 中
- python-3.x - 列出 azure 文件存储中的文件并获取最新文件
- flutter - Dart Hive 使用 Set 导致未知类型错误
- google-tag-manager - 如何使用谷歌标签管理器将自定义 html 实现到正文中
- java - 为什么它说无法解析符号身份验证?