[英]How to limit the amount of data returned from a JSON file using fetch?
我有这个返回 19 个建筑物名称的fetch
语句,但我只想要 10 个; 以下是我尝试过的,但我仍然得到 19 个建筑物名称。
fetchBuildings(energyProgramId) {
fetch(`http://localhost:1001/api/energyprograms/${energyProgramId}/buildings/?results=10`)
.then(res => res.json())
.then(json => {
this.setState({
isLoaded: true,
buildings: json,
})
});
}
我需要添加一些额外的东西吗?
下面是一个例子:
1.fetch(' http://jsonplaceholder.typicode.com/posts/ ')
上面的 URL 给出了包含 100 个元素的对象数组,因为它最初是一个包含 100 个元素的数组。
2.fetch(' http://jsonplaceholder.typicode.com/posts/?_limit=10 ') 这个 URL 给出了包含 10 个元素的对象数组。
注意到区别了吗?
我只这样做了: ?_limit=10 ----> 添加任何数字来代替 10,希望你能得到想要的结果。
正如另一个答案已经指出的那样,最好/最正常的解决方案是在后端更改 API 返回数据的方式。 通常 REST API 支持查询参数,例如limit
和start
或page
和resultsPerPage
。
如果这不可用 - 例如,当您获取外部资源时 - 静态文件服务器通常支持的替代方案,有时由 API 支持的是Range
标头,它允许您仅检索资源的特定字节范围(请注意,在 API 支持的情况下,它仍然会在服务器上加载整个资源,但不会传输整个资源)。 一个带有 fetch 的例子看起来像
fetch('', { headers: { range: 'bytes=0-1000'} })
在 XML 或 JSON 资源上执行此操作时可能会有些困难,但对于例如 CSV 文件,这是理想的选择。
与fetch
到XHR
或axios
或其他任何东西没有什么不同。 实际上,与react
或angular
或vue
或其他任何东西都没有什么不同。
这是后端开发人员编写的 API,它基于REST
API,因此当您将其称为GET
或POST
以及其他任何内容时,您只需获取后端开发人员设计的 JSON。 但
有一种新技术,名为GraphQL
。 您可以调用 API,然后您只需获取所需的 JSON。 此外,它必须在后端实现,但它是可能的。
它与 React 的关系并不密切。 如果您需要较少的数据,则必须在设置状态之前减少数据。
const reducedBuildings = [];
fetch(`http://localhost:1001/api/energyprograms/${energyProgramId}/buildings/?results=10`)
.then(res => res.json())
.then(json => {
json.forEach(building => {
if (reducedBuildings.length < 10) {
reducedBuildings.push(building);
}
});
this.setState({
isLoaded: true,
buildings: reducedBuildings,
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.