如何使用 node-fetch 从 API 获取数据和响应状态?
How to get data and response status from API using node-fetch?
根据节点获取文档node-fetch
我们可以得到这样的响应状态
fetch('https://github.com/')
.then(res => {
console.log(res.status);
});
并获取数据
fetch('https://api.github.com/users/github')
.then(res => res.json())
.then(jsonData => console.log(jsonData));
我有一个场景,我需要 return 来自响应的 JSON 数据和状态。我试过这样使用
fetch('https://api.github.com/users/github')
.then(res => res.json())
.then(jsonData => {
console.log(jsonData);
console.log(jsonData.status);
});
但是
console.log(jsonData.status)
不会return状态。我如何获取状态和输出数据
最简单的解决方案是声明一个变量并为其分配 res.status
值:
let status;
fetch('https://api.github.com/users/github')
.then((res) => {
status = res.status;
return res.json()
})
.then((jsonResponse) => {
console.log(jsonResponse);
console.log(status);
})
.catch((err) => {
// handle error
console.error(err);
});
您也可以尝试使用 async/await
:
const retrieveResponseStatus = async (url) => {
try {
const response = await fetch(url);
const { status } = response;
return status;
} catch (err) {
// handle error
console.error(err);
}
}
然后您可以将它与您想要的任何URL一起使用:
const status = await retrieveStatus('https://api.github.com/users/github')
另一种替代解决方案是使用 Promise.all
fetch('https://api.github.com/users/github')
.then(res => Promise.all([res.status, res.json()]))
.then(([status, jsonData]) => {
console.log(jsonData);
console.log(status);
});
希望对您有所帮助
我可能会朝相反的方向前进,但我建议您使用 requestJs,因为它的社区比 node-fetch 大得多,并且提供了很多功能。
使用requestJs你可以像
一样获取statusCode
request("https://api.github.com/users/github", (err, res, body) => {
let statusCode = res.statusCode;
});
RequestJs 还提供了许多简单的方法来调用不同的 API 方法,也很容易查看 API 请求和 API 响应。
这是另一个变体,使用异步 lambda 函数和数组解构:
fetch('https://api.github.com/users/github')
.then(async (res) => {
return [await res.json(), res.status];
})
.then(([jsonData, status]) => {
console.log(jsonData);
console.log(status);
})
.catch((err) => {
// handle error
console.error(err);
});
根据节点获取文档node-fetch
我们可以得到这样的响应状态
fetch('https://github.com/')
.then(res => {
console.log(res.status);
});
并获取数据
fetch('https://api.github.com/users/github')
.then(res => res.json())
.then(jsonData => console.log(jsonData));
我有一个场景,我需要 return 来自响应的 JSON 数据和状态。我试过这样使用
fetch('https://api.github.com/users/github')
.then(res => res.json())
.then(jsonData => {
console.log(jsonData);
console.log(jsonData.status);
});
但是
console.log(jsonData.status)
不会return状态。我如何获取状态和输出数据
最简单的解决方案是声明一个变量并为其分配 res.status
值:
let status;
fetch('https://api.github.com/users/github')
.then((res) => {
status = res.status;
return res.json()
})
.then((jsonResponse) => {
console.log(jsonResponse);
console.log(status);
})
.catch((err) => {
// handle error
console.error(err);
});
您也可以尝试使用 async/await
:
const retrieveResponseStatus = async (url) => {
try {
const response = await fetch(url);
const { status } = response;
return status;
} catch (err) {
// handle error
console.error(err);
}
}
然后您可以将它与您想要的任何URL一起使用:
const status = await retrieveStatus('https://api.github.com/users/github')
另一种替代解决方案是使用 Promise.all
fetch('https://api.github.com/users/github')
.then(res => Promise.all([res.status, res.json()]))
.then(([status, jsonData]) => {
console.log(jsonData);
console.log(status);
});
希望对您有所帮助
我可能会朝相反的方向前进,但我建议您使用 requestJs,因为它的社区比 node-fetch 大得多,并且提供了很多功能。
使用requestJs你可以像
一样获取statusCode request("https://api.github.com/users/github", (err, res, body) => {
let statusCode = res.statusCode;
});
RequestJs 还提供了许多简单的方法来调用不同的 API 方法,也很容易查看 API 请求和 API 响应。
这是另一个变体,使用异步 lambda 函数和数组解构:
fetch('https://api.github.com/users/github')
.then(async (res) => {
return [await res.json(), res.status];
})
.then(([jsonData, status]) => {
console.log(jsonData);
console.log(status);
})
.catch((err) => {
// handle error
console.error(err);
});