2017-08-01 73 views
0

我想通过http获取请求使用angular2和节点服务器 从Mongo DB获取数据。当我试图查看 浏览器中获取响应,我可以看到html标签为“_body”的价值,但如果同样的HTTP GET 请求更改为HTTP POST然后效应初探是如下:角度2 http获取请求不通过节点服务器获取数据,而http post正常工作

"{"success":true,"sellerdata":[]}" as value of "_body". 

为什么帖子正在使用相同的代码配置,但没有得到请求?

这是我的角码。所有必需的进口都存在于课堂上。
这是服务类,其中得到observable创建。

/**(post changes which is working fine)return 
this.http.post('/sellerlist',{}).map(**/ 

@Injectable() 
export class AdminService { 
    constructor(private http:Http) { } 
    getSellerdata(){ 
    return this.http.get('/sellerlist').map( 
     (res:Response) =>{return res.json();})  
    }} 

这是订户类,其中启动请求并在浏览器控制台上记录响应。

@Component({selector: 'app-admin-sellers',}) 
export class AdminSellersComponent implements OnInit { 
    constructor(private adminService :AdminService) { } 
    ngOnInit() { 
    this.adminService.getSellerdata().subscribe(
     (dataFromServer) => {console.log(dataFromServer);}); // 
    }} 

这里是我的节点服务器JS。所有服务器端配置都在这里。

const express = require('express'); 
const path = require('path'); 
const http = require('http'); 
const bodyParser = require('body-parser'); 
const jwt = require('jsonwebtoken'); 
const mongoose = require('mongoose'); 
const app = express(); 
const port = process.env.PORT || '3000'; 
app.set('port', port); 
const server = http.createServer(app); 
mongoose.Promise = require('bluebird'); 
mongoose.connect('localhost/testapp') 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(express.static(path.join(__dirname, 'dist'))); 
app.get('*', (req, res) => { 
    console.log(req.body); 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 
app.use('/secure/*', secureRoutes); 
function secureRoutes(req, res, next) { 
    var token = req.headers['token']; 
    if (token) { 
    jwt.verify(token, process.env.SECRET_KEY, function (err, decode) { 
     if (err) { 
     res.status(500).send('Email & Password do not match'); 
     } else { 
     next(); 
     }}); 
    } else {console.log(2)}}; 
app.all("/secure/*", secureRoutes, function (req, res, next) { 
    next();}); 
app.get('/sellerlist', getSellerList); 
/**(post changes which is working fine) 
app.post('/sellerlist', getSellerList);**/ 
+3

大概是因为当发送POST请求的服务器不响应的数据。 –

+0

不清楚你在这里问什么。您是否在说1.预期的数据不会被回复2.不知道如何处理来自回复的数据。我所看到的只是一个带'console.log()'的'.subscribe()',而不是试图在任何地方实际赋值。如果** 1 **是问题,那么你的问题缺乏相关的代码或测试实际与数据库本身一起工作的函数。当然,它只是一个GET方法。这里没有POST。 –

+0

在你的节点js –

回答

0
Problem was present in server side configuration. 

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 

is written before 

app.get('/sellerlist', getSellerList); 

So all get requests are handled by the default configuration . After reversing the above order , get requests worked.