如果没有结果,在API中返回值的正确方法

时间:2018-01-19 07:04:10

标签: php json

我正在为基于PHP后端的移动APP制作API。我有一些情况,我返回一个数组列表,如果没有结果,我返回一条消息

找到结果:

{"status":"success",
   "data":[{"users_details":[{"user_id":1,"parent_id":2}]}],
  "token":"success"}

在哪里找不到结果:

{"status":"error","data":"no user found","token":"success"}

这是一个好方法,如果没有它应该是什么?

4 个答案:

答案 0 :(得分:2)

我更喜欢使用http响应代码,因此对于未找到的数据,您可以返回204,当您找到匹配返回200和用户列表时

答案 1 :(得分:0)

回复消息是一个好主意,没有找到用户数据,但它是完美的,如果与响应一起,将返回正确的响应代码。在这种情况下,它将是404 - 未找到。有关详细信息,请参阅https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

答案 2 :(得分:0)

这取决于你如何处理它,我会简单地这样做。

{"status":"error","msg":"no user found","token":"success"}

因为您不需要对用户数据和错误消息感到困惑。

考虑状态是否为错误,那么它应该在 msg 键中有详细的错误消息

因此您可以在进入实际用户数据解析功能之前消除响应。像

if($response['status'] === 'error')
   return "Error Message: " . $status['msg'];

答案 3 :(得分:0)

我个人支持空阵。这是正常的情况,当API搜索没有返回结果时(空数组自然没有结果答案)。这对我来说还不错。

请求可能是格式错误或者数据库可能存在问题,返回状态确实如此:错误。

更多的说,当我们在带有数据和第二个字符串的第一个案例数组中返回时,无论如何都是不好的方法,因为我们必须处理不同类型的数据,这正如我所说的反模式。类型应始终相同。

我们首先检查状态是否正常或错误(没有连接,连接错误,请求错误等),然后检查数据(空数组=无结果)或检查错误消息

{"status": "error", "message": "connection error"}

{"status": "success", "data": []}

{"status": "error", "data": ["First result", "Second result"]}

这并不意味着我们无法将用户重定向到404页面。如果我们得到这样的API结果,当然。但是对于API请求,当空结果是正常结果时,它不应该被视为错误,或者我们将真正的错误与逻辑混合,这显然是坏的。