json - 在获取的 JSON 中添加自定义键
问题描述
我正在用 React 制作简单的博客网站,当我获取帖子时,我得到了发布它的用户 ID。有了这个 id,我正在做另一个axios
,在那里我得到具有给定 id 的用户,然后我将author
密钥分配给我获取的帖子 JSON,如下所示:
export const getPosts = async () => {
try {
const { data } = await axios.get(
"https://jsonplaceholder.typicode.com/posts"
);
for (const item of data) {
let user = await getUser(item["userId"]);
item["author"] = user.username;
}
return data;
} catch (err) {
toast.error(err.message);
}
};
export const getUser = async (id) => {
try {
const response = await axios.get(
"https://jsonplaceholder.typicode.com/users/" + id
);
return response.data;
} catch (err) {
toast.error(err.message);
}
};
此方法会导致 5-10 秒延迟显示帖子。我正在寻找更快、更简单的方法来向每个帖子显示用户名。你也可以告诉我是否有更好的方法来获取数据并显示它。
谢谢!
解决方案
如果没有其他端点可用于一次获取多个帖子作者信息,那么您已经以完全正确的方式完成了它。
好吧,这是一个答案,但我会从一个问题开始。
您是否有权访问处理您尝试获取的 Restful API 端点的维护人员或开发人员?
如果是?
告诉他们在获取帖子的响应中简单地包含作者信息
或者只是为您提供一个端点,允许您一次获取许多帖子的作者信息。
如果不
查看提供的文档(如果有),看看是否有任何端点允许您通过单个请求获取多个帖子的作者信息。
如果上述选项似乎都不是一种方法,请记住在获取资源时阻止 UI。
您还可以先获取少数作者,然后在后台获取更多内容或根据用户请求获取更多内容时显示,这样可以提供更好的用户体验。
快乐的黑客和编码
推荐阅读
- .net - 使用自动生成时如何在 .proto 文件中包含服务 (Serializer.GetProto<>())
- python - Tensorflow 一种用于多输出模型的自定义指标
- docker - 在容器启动时检查 docker 容器
- sql - 将一个表中具有共享引用的行总和与另一个表中的单个值进行比较
- spring-cloud-function - spring-cloud-function-deployer 在运行时以编程方式部署/取消部署函数
- vba - 在 VBA MS ACCESS 中使用 DAO 记录集数据填充数组
- python - 数据扩充后 - 不能使用 from_tensor_slices
- javascript - React js 传递一个函数 this.state 上下文
- python - Try/Except 仍然抛出 RelatedObjectDoesNotExist 错误?- 姜戈
- algorithm - 如何在 TrueSkill 中计算贝叶斯