JSON REST Api Pagination页面超出范围或空集合响应代码

Gra*_*avy 5 api rest json

寻找一些最佳实践请...

场景1:GET: /api/v1/widgets/?page=10&per_page=5窗口小部件集合仅包含10条记录.所以页面超出范围.

场景2:GET: /api/v1/widgets/窗口小部件集合当前为空.

所以在这两种情况下,我都在寻找合适的状态代码和响应.

我的想法:

  • 422 unprocessable entity通常用于验证,但在这种情况下,我认为这是合适的,因为page请求是超出范围的.对场景1特别有用
  • 400 bad request 因为页面超出范围:场景1
  • 404 Not found 因为资源是空的:场景1和2
  • 204 No Content因为两个集合都返回空数据:Scenarion 1和2
  • 200 - with data as empty array因为url有效,但内容不存在.情景1和2

这种结构目前是否有最佳实践?

小智 2

我建议返回一个空集合和状态代码 200。此外,您应该在响应标头中提供超链接以将客户端指向“正确”页面,例如第一页或最后一个“有效”页面。对于集合资源的分页,服务器应始终以指向上一页和下一页的超链接进行响应。