Javascript 如何在Express中返回JSON
我不熟悉node/express。我有一个简单的express应用程序,其中有一条发布路线(“/”)。给定一个GitHub用户名列表,它应该返回关于这些开发人员的信息 例如,如果我发布Javascript 如何在Express中返回JSON,javascript,node.js,express,Javascript,Node.js,Express,我不熟悉node/express。我有一个简单的express应用程序,其中有一条发布路线(“/”)。给定一个GitHub用户名列表,它应该返回关于这些开发人员的信息 例如,如果我发布 { "developers": ["JohnSmith", "JaneDoe"] } 它应该会回来 [ { "bio": "Software Engineer at Google", &quo
{ "developers": ["JohnSmith", "JaneDoe"] }
它应该会回来
[
{
"bio": "Software Engineer at Google",
"name": "John Smith"
},
{
"bio": "Product Manager, Microsoft",
"name": "Jane Doe"
}
]
这就是我目前所拥有的
const express = require('express');
const axios = require('axios');
const app = express();
app.use(express.json());
app.post('/', function(req, res, next) {
try {
let results = req.body.developers.map(async d => {
return await axios.get(`https://api.github.com/users/${d}`);
});
let out = results.map(r => ({ name: r.data.name, bio: r.data.bio }));
return res.send(out);
} catch {
next(err);
}
});
app.use((err, req, res, next) => {
res.send("There was an error");
})
app.listen(3000, function(){
console.log("Server started on port 3000!");
});
当我在像失眠这样的工具中尝试此操作时,我不断发现
出现错误
您可以根据文档使用res.formate()
或根据文档设置res
的类型
在中间件中,您总是说res.json(“有一些错误”),如果不需要,为什么要保留它呢。如果删除app.use()。您将看到请求返回给您开发人员的姓名 请阅读本文以了解错误处理。
在Express API中返回JSON的方式如下:
res.status(200).json(out)
有关完整文档,请参阅。您得到的是一个错误。因为,您的
/
路线中有一个错误。但是,问题是您没有使用catch编写err
参数。如果在catch
(您的try/catch
块)和console.log
中添加一个,您将看到错误
TypeError:无法读取未定义的属性“name”
出现此错误是因为,results
变量实际上是一个挂起的Promise
数组。你需要首先解决这些悬而未决的承诺。一种方法是
app.post(“/”,函数(req、res、next){
试一试{
const developers=req.body.developers;
让承诺=[];
developers.map((d)=>{
承诺。推送(axios.get)(`https://api.github.com/users/${d}`);
});
承诺。所有(承诺)。然后((回应)=>{
释放=响应。映射((r)=>({
名称:r.data.name,
bio:r.data.bio,
}));
返回res.send(out);
});
}捕捉(错误){
下一个(错误);
}
});
错误是什么?这是否回答了您的问题@EA6923检查这一点,我认为这很容易,因为res.send(JSON.stringify(“有一个错误”)@用户123456将导致“\”出现错误\
,这可能不是所需的。
res.status(200).json(out)