繁体   English   中英

处理 REST API 服务器响应

[英]Handling REST API server response

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

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

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来判断服务器是否有错误(代码错误、无效请求等)。

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

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

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

编辑 1:

if (res.status == 200){
    // user found
} else if (res.status == 204) {
    // user not found
} else {
    alert('An error occured')
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM