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": []
}
我想知道是否有人可以给我一些指导。
我正在学习使用 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": []
}