从return返回一些单词 - rest函数

时间:2017-02-07 13:24:22

标签: json node.js rest buffer

在这种情况下,我已经尝试获取返回的JSON,但是当我使用JSON.parse和JSON.stringify时,它返回undefined。如果我不使用并仅保留data = data.toString('utf8');,请返回:

!!xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.rest.schema.CtLoginResp {error: null, sessionID: 6dMX4uGVurFdLRL+hW4F2kIW}

我想要sessionid ...但是如果我尝试得到这个,返回undefined,我尝试JSON.parse,JSON.stringify,看看:

我的代码:

var Client = require('./lib/node-rest-client').Client;
var client = new Client();

var dataLogin = {
   data: { "userName":"xxxxxxxxxxx","password":"xxxxxxxxxxxxx","platform":"xxxxxxx" },
   headers: { "Content-Type": "application/json" }
};

client.registerMethod("postMethod", "xxxxxxxxxxxxxxxxxxxx/login", "POST");

client.methods.postMethod(dataLogin, function (data, response) {
   // parsed response body as js object
   // console.log(data);
   // raw response
if(Buffer.isBuffer(data)){ // if i remove buffer return is 21 22 etc etc 
   data = data.toString('utf8'); // this return all but String
    var outputTe = data;
    var res = outputTe.split(" ", 4);
        res = res[3].split("}", 1);
  }
console.log(res);
});

图片返回:

如果我不使用缓冲区返回是21 34 56等。 但如果我使用return就是图片中的所有 STRING data.toString(); ......

enter image description here

修改

我尝试使用split但只返回字符串“sessionid”,请参阅另一张图片:

enter image description here

我在W3学校内尝试相同的代码并且在我的代码中不起作用,但在W3学校测试工作正常:

1) enter image description here

2)

enter image description here

1 个答案:

答案 0 :(得分:0)

在我使用正则表达式的情况下:

client.methods.postMethod(dataLogin, function (data, response) {

    if(Buffer.isBuffer(data)){
      data = data.toString('utf8');
      console.log(data);
      var re = /(sessionID: )([^,}]*)/g;
      var match = re.exec(data);
      var sessionid = match[2]
      console.log(sessionid);
      openRequest(numberOrigin); 
      }
    });