2016-03-22 23 views
5

Tôi không thể nhận thông số bài đăng trên máy chủ. Tôi gửi yêu cầu bài viết trong ứng dụng Angular 2 tới máy chủ Nodejs express. Ở đây mã của tôi ở góc 2:Góc 2 http post + Nodejs thể hiện

import { Injectable } from 'angular2/core';                          
import { Http } from 'angular2/http'; 

@Injectable() 
export class QueryService { 
    static get parameters() {                              
    return [[Http]]                            
    }                                    
    constructor(http) {                            
    this.http = http;                               
    } 
    postApi() { 
    var headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 

    return this.http.post('http://localhost:3001/post_test', JSON.stringify({"id": 1, "name": "2"}), { headers: headers }).toPromise(); 
    }                                    
} 

Trong trình duyệt tôi thấy rằng bài params được gửi, ví dụ như trong phần chrome "Yêu cầu Playload" chứa dữ liệu bài viết của tôi. Và đây máy chủ của tôi:

app.js:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json());                             
app.use(bodyParser.urlencoded({extended: true}));                       

tuyến/index.js:

exports.post_test = function(req, res) { 
    console.log('post_test ', req.body); 
} 

và đầu ra là "post_test {}"

Tôi có thể' Tôi hiểu, đâu là vấn đề. Bởi vì máy chủ của tôi hoạt động tốt, khi tôi sử dụng dịch vụ Angular 1 $ http cho các truy vấn đăng bài. Xin hãy giúp tôi!

Trả lời

3

Bạn quên import lớp Headers:

import { Injectable } from 'angular2/core';                          
import { Http, Headers } from 'angular2/http'; // <---- 

Trong trường hợp này, các tiêu đề không được gửi cùng với yêu cầu của bạn, nhưng không có lỗi được hiển thị.

Các vấn đề liên quan