簡體   English   中英

處理API響應中缺少的屬性

[英]Handling missing properties in API responses

我應該如何處理后端的API響應中缺少的屬性?

我有一個React應用,我從后端獲取一些數據。 然后,我使用這些數據來呈現一些元素,並根據該響應中的值來處理一些動作。 但是可能會發生某些值丟失的情況。 然后,我應該始終以將默認值分配給缺少的屬性的方式來驗證API響應,例如:

import { get } from 'lodash'


const { data } = await axios.get(...);

const dataForFrontend = {
  id: get(data, 'id', 'N/A'),
  name: get(data, 'name', 'N/A'),
  lastName: get(data, 'lastName', 'N/A'),
  email: {
    address: get(data, 'email.address', 'N/A'),
    active: get(data, 'email.active', false),
  }
}

(如果data沒有email字段,而我立即使用了它,那么前端應用很可能會因為“無法讀取未定義的屬性address ”而中斷。)

...或者也許我應該立即使用data並假設它是有效的,否則那將意味着后端損壞了,並且通過分配默認值,我將問題掃到了地毯下(我的意思是,稍后它將出現一些其他錯誤,關於嘗試例如用N/A乘以100)?

我想知道正確的方法-驗證還是假設它必須有效?

如何處理此問題完全取決於您的業務需求以及您願意為處理這些案件付出的努力。

我同意,如果您的前端應用程序可能會嘗試將該字符串乘以100,則返回N/A是一個壞主意。

最多的工作,最好的用戶體驗

聽起來您在數據庫或API中還有其他合法條目,可能缺少屬性。 在這種情況下,您可能最好遵循“優雅降級”的策略,在該策略中,您的前端邏輯已准備好處理缺失的屬性,也許需要先填充那些缺失的屬性,然后才能進行進一步的工作。該記錄。

減少工作量,仍然向用戶傳達問題

下一個最佳選擇可能是立即驗證傳入的數據,並使請求失敗並拋出錯誤,並向用戶提供有用的信息。

最壞的方法

在所有這三個選項中,記錄不完整的記錄似乎是最糟糕的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM