1. 程式人生 > >client提交json(nodejs)和server解析json並返回json資料(express)

client提交json(nodejs)和server解析json並返回json資料(express)

先寫一個nodejs檔案用於向伺服器傳送json資料: jsonClient.js:
var http = require('http');
var crypto = require('crypto');//引入加密模組


var text = "phoneNumber=15210943874&key=99999999";
var hasher=crypto.createHash("md5");//md5加密
hasher.update(text);
var md5key=hasher.digest('hex');//hashmsg為加密之後的資料
console.log("the md5 is:",md5key);

var user = {
    PhoneNumber: '15210943874',
    authKey: md5key
};


//var userJson=JSON.stringify(user);
//varuserString='data='+userjson;//這種格式在伺服器端解析的時候可解析為req.body.datda
var userString = JSON.stringify(user);//轉換為json字元格式,在伺服器端直接解析req.body
var headers = {
    'Content-Type': 'application/json',
    //如果使用的是varuserString='data='+userjson格式應將'Content-Type':設為'application/x-www-form-urlencoded'//form表單格式
    'Content-Length': userString.length
};

var options = {
    host: 'localhost',//主機:切記不可在前面加上HTTP://
    port: 3000,//埠號
    path: '/image',//路徑
    method: 'POST',//提交方式
    headers: headers
};


var req = http.request(options, function (res) {
//    console.log('STATUS: ' + res.statusCode);
//    console.log('HEADERS: ' + JSON.stringify(res.headers));
    //  res.setEncoding('utf8');
    res.on('data', function (message) {
        var ret= eval('(' + message + ')');
        console.log('response : ' ,ret);
    });

});
req.on('error', function(e) {
    console.log('problem with request: ' + e.message);
});

// write data to request body
req.write(userString);//向req.body裡寫入資料
req.end();

用express建立一個工程,然後在app.js檔案中加入
app.post('/image', function(req, res, next) {
    console.log(req.body);//請求中還有引數data,data的值為一個json字串
// var data= eval_r('(' + req.body.data + ')');//需要將json字串轉換為json物件
// console.log("data="+data.PhoneNumber);
    console.log(req.body.PhoneNumber);//解析json格式資料
    res.contentType('json');//返回的資料型別
    res.send(JSON.stringify({ status:"success" }));//給客戶端返回一個json格式的資料
    res.end();
});