【问题标题】:Node.js and express.js how to read 'get' endpoint?Node.js 和 express.js 如何读取“get”端点?
【发布时间】:2021-12-18 22:48:21
【问题描述】:

我正在尝试将简单数据从我的服务器传递到另一个 html 页面上调用的 javascript 文件。我正在测试从服务器发送单个字符串,但不确定如何接收它。以下服务器:

const express = require('express')
const app = express()
const port = 3000

app.use(express.static("./assets"));

app.get('/', (req, res) => {
  //res.send('Hello World!')
  res.sendFile('./main.html', { root: __dirname });
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

app.get('/get-test', async (_req, res) => {
    try {
        const test_string = "get-test request string";
        return res.send(test_string);
    } catch (e) { throw e; }
});

在另一个 javascript 文件中,我有以下内容:

async function testing() {
    const response = await fetch('/get-test');
    console.log(response);
}
testing();

console.log 给了我一个完整的对象,点击它我似乎在任何地方都找不到我的test_string

所以我相信get 请求有效,但我如何真正访问我想要的内部数据?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    你需要在console.log之前调用await response.text()

    【讨论】:

    • 谢谢,我是使用 express 的新手。作为快速跟进,如果我的 get 请求发送整个 json 对象怎么办?
    • 那您可以拨打await response.json()。此外,这不是 Express 特有的,它只是浏览器 Fetch API 的一部分,因此您必须在任何 HTTP 请求之后调用其中一种方法。
    • 谢谢!我会尽快接受你的回答。
    【解决方案2】:

    所以在这个函数中:

    async function testing() {
        const response = await fetch('/get-test');
        console.log(response);
    }
    testing();
    

    您需要将await 放入console.log 中

    像这样:

    async function testing() {
        const response = await fetch('/get-test');
        console.log(await response);
    }
    testing();
    

    为什么?

    由于 javascript 在检索数据时是异步的,因此会有延迟。这就是他们实现 async / await 和 promises 的原因。因此,当您尝试使用 fetch 发出获取请求时,您需要等待响应。但是响应也是一个承诺,这意味着您也需要等待响应。当您尝试处理对 json 的响应时,这更有意义。

    一个小提示

    当 console.log 没有返回错误,但也没有数据时。这可能是因为承诺问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2018-12-31
      • 2011-10-18
      相关资源
      最近更新 更多