从JSON服务器端点

时间:2017-02-25 18:47:40

标签: javascript json

我正在使用JSON服务器作为后端创建一个模拟应用程序,我想知道是否有可能在不加载所有记录的情况下获取端点中包含的记录总数?假设db.json文件看起来像下面的JSON片段,我怎么能发现端点只有一条记录而没有获取记录本身,只要它可能?

    {
      "books": [{
      "title": "The Da Vinci Code",
      "rating": "0"}]
    }

5 个答案:

答案 0 :(得分:3)

您有三种选择。我建议给你第三个:

  1. 返回所有记录并计算它们。这可能很慢,并通过网络发送大量数据,但可能是您最小的代码更改。它还可以让人们通过反复请求许多记录来攻击服务器。

  2. 添加新端点。您可以添加一个只返回计数的新端点。这是一个简单但有点烦人的第二个内存时间来记录和维护。

  3. 修改现有端点。返回类似

  4. 的内容

    { count: 157, rows: [...data] }

    3的好处是它在一个端点中。它也接近您可以在将来添加skiptake参数的位置,以允许对结果数据进行分页。

答案 1 :(得分:2)

您只需检索X-Total-Count标头

这是启用分页(即使用_page参数(例如localhost:3000/contacts?_page=1)时JSON Server返回的响应标头的屏幕截图

答案 2 :(得分:1)

您将编写另一个返回记录数的终点。通常您也可能希望限制和偏移的终点与分页一起使用。

答案 3 :(得分:0)

无论何时获取数据,json-server实际上都会默认返回总计数(它具有x-total-count属性:

示例:

axios
  .get("http://localhost:3001/users", {
    params: {
      _page: 1,
      _limit: 10
    }
  })
  .then(res => {
    console.log(res.data); // access your data which is limited to "10" per page
    console.log(res.headers["x-total-count"]); // length of your data without page limit
  });

答案 4 :(得分:0)

let response = await fetch("http://localhost:3001/books?_page=1");
let total = response.headers.get('X-Total-Count');