0

我已经使用 REST API CodeIgniter 一年多了,通常当我想返回任何响应时,我会返回200所有类型的请求。我知道所有响应都提供了状态码,但我实际上很想知道,如果我使用200所有响应是错误的吗?true并用和确定数据状态false

这是我一直使用的示例代码。假设检查用户是否存在。

CodeIgniter REST API

$user = [ 'id' => 1, 'name' => 'John Doe' ];

$this->response([
    'status' => !empty($user) ? true : false,
    'user' => $user
], REST_Controller::HTTP_OK);

反应原生

try {
    const res = await axios.get('https://www.example.com/retrieve-user?user_id=3');
    if (res.status == 200){
        if(res.data.status == true){
            // user found
        } else {
            // user not found
        }
    } else {
        alert('Internal server error.')
    }
} catch (err) {
    console.error(err);
}

根据例子,我其实是根据状态码200来判断服务器是否有错误(代码错误、请求无效等)。

所以我的问题是,坚持这种方法可以吗?

4

1 回答 1

1

给定您的 API,的,处理代码200似乎就足够了,因为您的 API 可能不会返回任何其他 HttpCode。
给定一个更大的 API(甚至很简单),没有.

如果没有找到具有给定 ID 的用户,您的 API 可能会返回204/ 。如果您的 API 正在部署(且不可用)或维护中, 您的 API 可能会返回 a ,您可以在 30 秒后重试。 如果缺少给定的标头(Content-Type ...),您的 API 可能会拒绝请求并返回...404
503
400

编辑 1:

if (res.status == 200){
    // user found
} else if (res.status == 204) {
    // user not found
} else {
    alert('An error occured')
}
于 2020-10-15T12:40:25.943 回答