簡體   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