如何使用节点js从https get请求中获取请求主体

安德斯·基特森

我在节点js中使用https和aws4发出获取请求。我知道它有效是因为我的发布请求有效,但是对于我一生来说,我不知道如何获取GET请求正文。我需要将GET响应的请求正文放在一个变量中。

StatusCurrent函数是我需要获取GET请求发送回的响应的地方。

任何帮助将不胜感激。

const Alexa = require("ask-sdk-core");
var https = require("https");
var aws4 = require("aws4");

function request(opts) {
  https
    .request(opts, function (res) {
      res.pipe(process.stdout);
      // IS THIS WHERE I GET THE REQUEST BODY, BUT HOW
      // I NEED TO PUT IT IN A VARIABLE
    })
    .end(opts.body || "");
}

function lightbulb(status) {
  var load = JSON.stringify({
    state: {
      desired: {
        on: status,
      },
    },
  });

  request(
    aws4.sign(
      {
        hostname: "obsf-ats.iot.us-east-1.amazonaws.com",
        service: "iotdata",
        region: "us-east-1",
        method: "POST",
        path: "/things/esp8266_7F3B95/shadow",
        headers: {
          "Content-Type": "application/json0",
        },
        body: load,
      },
      {
        secretAccessKey: "",
        accessKeyId: "obsf",
      }
    )
  );
}

function statusCurrent() {
  request(
    aws4.sign(
      {
        hostname: "obsf-ats.iot.us-east-1.amazonaws.com",
        service: "iotdata",
        region: "us-east-1",
        method: "GET",
        path: "/things/esp8266_7F3B95/shadow",
        headers: {
          "Content-Type": "application/json0",
        },
      },
      {
        secretAccessKey: "",
        accessKeyId: "osbf",
      }
    )
  );
}

根据答案,这是我返回的请求回复,但是我无法使用 body.state

{
    "state": {
        "desired": {
            "on": false
        },
        "reported": {
            "ota": {
                "fw_version": "1.0",
                "fw_id": "20201123-145524",
                "mac": "4A3FDA7F3B95",
                "device_id": "esp8266_7F3B95",
                "app": "indoor-doorbell",
                "arch": "esp8266",
                "message": "idle",
                "status": 0,
                "is_committed": true,
                "partition": 0,
                "progress_percent": 0
            },
            "ram_total": 52672,
            "ram_free": 28892,
            "uptime": 0,
            "btnCount": 2,
            "on": false
        }
    },
    "metadata": {
        "desired": {
            "on": {
                "timestamp": 1606258639
            }
        },
        "reported": {
            "ota": {
                "fw_version": {
                    "timestamp": 1606185982
                },
                "fw_id": {
                    "timestamp": 1606185982
                },
                "mac": {
                    "timestamp": 1606185982
                },
                "device_id": {
                    "timestamp": 1606185982
                },
                "app": {
                    "timestamp": 1606185982
                },
                "arch": {
                    "timestamp": 1606185982
                },
                "message": {
                    "timestamp": 1606218681
                },
                "status": {
                    "timestamp": 1606218681
                },
                "is_committed": {
                    "timestamp": 1606218681
                },
                "partition": {
                    "timestamp": 1606218681
                },
                "progress_percent": {
                    "timestamp": 1606218681
                }
            },
            "ram_total": {
                "timestamp": 1606218681
            },
            "ram_free": {
                "timestamp": 1606171272
            },
            "uptime": {
                "timestamp": 1606258639
            },
            "btnCount": {
                "timestamp": 1606258639
            },
            "on": {
                "timestamp": 1606258639
            }
        }
    },
    "version": 225030,
    "timestamp": 1606265545
}
spaxxUnited
const httpGet = url => {
  return new Promise((resolve, reject) => {
    http.get(url, res => {
      res.setEncoding('utf8');
      let body = ''; 
      res.on('data', chunk => body += chunk);
      res.on('end', () => resolve(body));
    }).on('error', reject);
  });
};

参见https://stackoverflow.com/a/50244236/2142490

我希望它与https相同

更新:所以我会尝试

function request(opts) {
  https
    .request(opts, function (res) {

      // IS THIS WHERE I GET THE REQUEST BODY, BUT HOW
      // I NEED TO PUT IT IN A VARIABLE
      res.setEncoding('utf8');
      let body = ''; 
      res.on('data', chunk => body += chunk);
      res.on('end', () => {
          
          console.log(body);
          let json = JSON.parse(body);
          console.log(json.state);

      }
    })
    .end(opts.body || "");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从 GET 请求中获取 JSON 数据(主体应用程序/json)?

来自分类Dev

如何获取调度请求中的响应头和主体?

来自分类Dev

如何在nginx上获取等待或排队的请求的请求主体?

来自分类Dev

如何从GET请求中获取参数?

来自分类Dev

如何从GET请求中获取参数?

来自分类Dev

如何以角度发出 HTTP 请求并从对象中获取主体?

来自分类Dev

在openshift节点js应用中获取请求

来自分类Dev

如何获取GET请求中的函数中使用的变量的值?

来自分类Dev

如何在Express.js中遍历POST请求的主体?

来自分类Dev

如何从节点“请求”模块中获取数据

来自分类Dev

jQuery使用JSON主体获取对REST API的请求

来自分类Dev

如何获取GET请求正文

来自分类Dev

请求主体在节点Express中未定义

来自分类Dev

获取javascript(和Node.js)中GET请求的结果

来自分类Dev

如何将GET请求的JSON主体映射到参数?

来自分类Dev

使用Java以HTTP GET请求发送内容主体

来自分类Dev

如何仅从GET HTTP请求中获取消息正文?

来自分类Dev

使用jQuery从GET请求中获取简单的布尔值

来自分类Dev

EssentialAction:如何在不解析请求的情况下获取请求的主体

来自分类Dev

我如何在tomcat上获取Jersey 2.5.1记录包括实体的请求/响应(请求/响应主体)

来自分类Dev

节点:如何使用https模块对请求进行分页?

来自分类Dev

使用 Python 请求库从单个 GET 请求中获取标头和内容

来自分类Dev

如何使用密码请求获取节点的ID?

来自分类Dev

如何使用节点获取请求设置参数

来自分类Dev

如何在 NestJS 控制器处理程序的请求中获取“已验证主体”和“经过身份验证的用户”?

来自分类Dev

在node.js中过滤发布请求的主体

来自分类Dev

如何从请求中获取MediaType

来自分类Dev

如何从请求中获取 JSON?

来自分类Dev

如何从节点api中的get请求中获取解码的JWT令牌

Related 相关文章

  1. 1

    如何从 GET 请求中获取 JSON 数据(主体应用程序/json)?

  2. 2

    如何获取调度请求中的响应头和主体?

  3. 3

    如何在nginx上获取等待或排队的请求的请求主体?

  4. 4

    如何从GET请求中获取参数?

  5. 5

    如何从GET请求中获取参数?

  6. 6

    如何以角度发出 HTTP 请求并从对象中获取主体?

  7. 7

    在openshift节点js应用中获取请求

  8. 8

    如何获取GET请求中的函数中使用的变量的值?

  9. 9

    如何在Express.js中遍历POST请求的主体?

  10. 10

    如何从节点“请求”模块中获取数据

  11. 11

    jQuery使用JSON主体获取对REST API的请求

  12. 12

    如何获取GET请求正文

  13. 13

    请求主体在节点Express中未定义

  14. 14

    获取javascript(和Node.js)中GET请求的结果

  15. 15

    如何将GET请求的JSON主体映射到参数?

  16. 16

    使用Java以HTTP GET请求发送内容主体

  17. 17

    如何仅从GET HTTP请求中获取消息正文?

  18. 18

    使用jQuery从GET请求中获取简单的布尔值

  19. 19

    EssentialAction:如何在不解析请求的情况下获取请求的主体

  20. 20

    我如何在tomcat上获取Jersey 2.5.1记录包括实体的请求/响应(请求/响应主体)

  21. 21

    节点:如何使用https模块对请求进行分页?

  22. 22

    使用 Python 请求库从单个 GET 请求中获取标头和内容

  23. 23

    如何使用密码请求获取节点的ID?

  24. 24

    如何使用节点获取请求设置参数

  25. 25

    如何在 NestJS 控制器处理程序的请求中获取“已验证主体”和“经过身份验证的用户”?

  26. 26

    在node.js中过滤发布请求的主体

  27. 27

    如何从请求中获取MediaType

  28. 28

    如何从请求中获取 JSON?

  29. 29

    如何从节点api中的get请求中获取解码的JWT令牌

热门标签

归档