我的目标很简单:我想从Angular 并通过http向我的node.js发送发帖请求
但是,未收到请求。
这是我的Angular代码
const Data = [{
'name' : this.userForm.controls.name.value,
'email' : this.userForm.controls.email.value,
'Object': this.userForm.controls.Object.value,
'message': this.userForm.controls.message.value
}];
console.log('ready to send');
this.http.post('http://localhost:8012/sendmail', Data).subscribe();
我只是在数据中格式化数据以发送数据。这是我所有尝试的一部分。 该网址很好,因为我使用get方法进行了测试,并且可以正常工作!
现在在Node.js中
const express = require('express');
const path = require("path");
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
var db = mongoose.connect("mongodb://localhost:27017/test",
function( err, response){
if(err){console.log(err);}
});
var app = express();
app.use(bodyParser());
app.use(bodyParser.json({limit:'10mb'}));
app.use(bodyParser.urlencoded({extended:true}));
app.use(function(req,res,next){
res.setHeader('Access-Control-Allow-
Origin','http://localhost:4200');
res.setHeader('Access-Control-Allow-
Methods','http://localhost:4200','POST');
res.setHeader('Access-Control-Allow-
Credentials','http://localhost:4200', true);
next();
});
app.post("/sendmail",function (req, res, next){
console.log("wddddddf");
res.end('buck');
})
app.listen(8012, ()=>{
console.log('waf waf 8012 waf waf');
})
在这里我只想接收数据和console.log ,以了解它是否正常工作。
我的问题是请求似乎无法到达我的节点。
有人可以帮助我理解原因吗?
编辑:订阅仍然无法使用。我遇到这个错误:
答案 0 :(得分:2)
经过数小时的搜索,我找到了解决方案: 我将此行添加为setHeader:
res.setHeader( 'Access-Control-Allow-Headers', 'Accept,Accept-
Language,Content-Language,Content-Type');
答案 1 :(得分:1)
由于您尚未订阅post
请求,因此未发送您的请求
this.http.post('http://localhost:8012/sendmail', Data)
.subscribe((result) => console.log(result));
答案 2 :(得分:0)
您需要订阅post
请求:
this.http.post('http://localhost:8012/sendmail', Data)
.subscribe();
角度Http
和版本4.3 HttpClient
起,使用RxJS流将数据发送(使用RxJS术语发射)到后端。这些流是延迟计算的,这意味着除非订阅了某些内容,否则它们将不会发出任何值。
因此,您需要像这样构造您的http调用:
this.http.post(url, data)
.map((response) => { //optional
//map over data - do some computation
})
.subscribe();
通常,前4行在服务中-包裹在返回Observable()的函数中,.subscribe()
块在调用服务方法的组件中。
答案 3 :(得分:0)
您需要从@ angular / common / http导入HttpClient,如下所示。
import {HttpClient, HttpHeaders} from '@angular/common/http';
查看是否有效。