Laravel 5.2 Dingo API 未返回任何记录

Laravel 5.2 Dingo API returning no records

我想知道是否有人可以给我一些指导。

我正在学习使用 Laravel 构建 API 的教程,可在此处找到

https://www.sitepoint.com/how-to-build-an-api-only-jwt-powered-laravel-app/

运行良好,但我遇到的问题是错误响应和最佳实践。

如果数据库中有记录那么一个简单的

return $records;

效果很好,但是如果找不到记录怎么办?

在教程中,当没有找到记录时会抛出一个 http 异常

throw new NotFoundHttpException; 

但是这个 returns 404,我不确定它是否与数据库中的无记录相关,404 更像是找不到页面之类的东西,不是吗?

所以,我想我想问的是,返回 API 中未找到记录的最佳做法是什么?

如有任何帮助,我们将不胜感激。

干杯

您应该根据请求的资源类型来处理它。

单一资源

当请求的资源是单个记录时,例如 /api/v1/posts/1,并且没有具有该 ID 的记录(示例中为 1),您应该 return a 404 Not Found.请求的位置不存在。

资源收集

当请求的资源是记录的集合时,例如 'all posts' (/api/v1/posts) 并且没有该类型资源的记录,您 return a 200 OK 正文中有一个空集合。请求的位置确实存在,所以在这里用 404 响应是不合适的。

A JSON 对没有记录的集合请求的响应正文可能如下所示:

{
    "posts": []
}