【问题标题】:Cannot send Json response when using Axios in Node.js server在 Node.js 服务器中使用 Axios 时无法发送 Json 响应
【发布时间】:2019-11-20 19:26:44
【问题描述】:
const express = require("express")
const app = express()
const {json, urlencoded} =  require("body-parser")
const axios = require('axios')

app.use(urlencoded({ extended: false }))

//app.use(json())

app.get("/" , (req , res) => {
    axios.get('https://api.github.com/users/haitruonginfotech')
    .then(response => res.send({success : true , response}))
    .catch(error => res.send({success : false , message : error}))
})

app.listen("3001",() => console.log("Server started"))

结果:

【问题讨论】:

  • 因为Errors上设置的属性被配置为不可枚举。所以你得到了message: {}
  • axios 在response.data中发送实际请求体

标签: node.js express axios


【解决方案1】:

对代码稍作改动应该可以正常工作,错误不在 Axios 中,而是在 Express 中,试图将整个(循环)响应结构转换为 Json。

另外,我不会发回整个错误对象,因为它不能很好地序列化,最好发送选定的属性,例如消息。

const express = require("express")
const app = express()
const axios = require('axios')

app.get("/" , (req , res) => {
    axios.get("https://api.github.com/users/janbodnar")
    .then(response => res.send({success : true , response: response.data}))
    .catch(error => res.send({success : false , message: error.message}))
})

app.listen("3001",() => console.log("Server started"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 2017-10-05
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多