【问题标题】:Why does one HTTP GET request retrieve the required data and another retrieve []为什么一个 HTTP GET 请求检索所需数据而另一个检索 []
【发布时间】:2016-01-11 13:56:02
【问题描述】:

我目前正在研究 ng-admin。

我在从我的 REST API(连接到 MongoDB)检索用户数据并显示它时遇到问题。

我发现问题如下:

当我在浏览器中输入http://localhost:3000/users 时,我会得到数据库中所有用户的列表。

当我输入http://localhost:3000/users?_page=1&_perPage=30&_sortDir=DESC&_sortField=id时, 结果我得到了[]

我对此很陌生,我使用了我的浏览器和 POSTMAN Chrome 扩展来测试它并得到相同的结果。

【问题讨论】:

    标签: mongodb rest http get ng-admin


    【解决方案1】:
    http://localhost:3000/users_end=30&_order=DESC&_sort=id&_start=0
    

    此 (/users_end) 是与 /users 不同的请求。

    应该是:

    http://localhost:3000/users?end=30&_order=DESC&_sort=id&_start=0
    

    或者,通过查看其他参数:

    http://localhost:3000/users?_end=30&_order=DESC&_sort=id&_start=0
    

    end_end 是第一个参数(标记?)。


    更新(它是?和_之前,我已经编辑了。):

    如果向请求添加参数返回一个空列表,请尝试一次仅添加一个以缩小问题范围(这些参数的使用可能有错误 - 您确定需要这些下划线吗?)。

    【讨论】:

      【解决方案2】:

      您的 REST API 必须能够处理分页、排序和过滤。但 ng-admin 无法确定具体如何,因为 REST 是一种风格而非标准。所以 ng-admin 会假设你的 API 在默认情况下是如何做到的,这就是它添加这些 _end_sort 查询参数的原因。

      为了将这些参数转换为您的 API 可以理解的参数,您必须添加一个拦截器。这在 ng-admin 文档中有详细解释:http://ng-admin-book.marmelab.com/doc/API-mapping.html

      【讨论】:

      • 我的 API 不允许我进行排序或分页,这是否意味着我不能使用 ng-admin
      • 您仍然可以使用 ng-admin,但您必须在拦截器中删除排序和分页查询参数。
      • 抱歉,您的文档清楚地表达了这些概念,我以前不明白。
      猜你喜欢
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      相关资源
      最近更新 更多