NodeJS需要的身体有时是对象,有时是字符串吗?

时间:2017-01-17 01:49:57

标签: javascript json node.js require

在此功能中:

exports.subscribeWebhook = function (page, pageToken) {
    return new Promise(function (resolve, reject) {
        request({
            url: 'https://graph.facebook.com/v2.6/me/subscribed_apps',
            qs: {
                access_token: pageToken //Query string: ?access_token=pageToken
            },
            method: 'GET'
        }, function (error, response, body) {

当我尝试用JSON.parse(body)解析身体时,我没有遇到任何问题,但是对于这个问题,这是一个POST

exports.call = function (method, botId, json) {
    return new Promise((resolve, reject) => {
        request({
            url: 'https://api.telegram.org/bot'+mongo.mongoCache.telegramPageTokens[botId]+"/"+method,
            method: 'POST',
            json: json//remember to don't even set the json property if it's undefined (or maybe it's default?)
        }, function (error, response, body) {

当我尝试解析身体时,我收到错误。当我打印正文时,它只是一个JSON对象,没有其他东西,但如果我typeof(body)我得到Object,但对于第一个函数,我得到string

我知道我可以使用stringfy然后解析,但我想了解发生了什么。为什么有时身体是一个字符串,有时它是一个对象?

1 个答案:

答案 0 :(得分:1)

json属性设置为true为请求设置application / json标头,并另外将响应解析为JSON(所以你不必)

了解它here

对facebook的第一个请求返回字符串编码的响应,这就是你需要自己解析的原因