1.目的

レスポンスクラスハンドラーの作成方法を共有します。

2.ソース

/**
 * リクエストの結果をハンドリングする.
 * @param {Promiss} promiss
 * @return reponse レスポンス => {success: XXX, data: XXX, message: XXX}
 */
export const handleResponse = async(promiss) => {
    const response = await promiss;
    if (response.success && !response.error) { //成功
        return {
            success: response.success,
            message: response.message,
            data: response.data
        };
    } else {
        if (!response.error) { //警告
            return {
                success: response.success,
                message: response.message,
                data: response.data,
            };
        } else { //システムエラー
            //システムエラーメッセージをスロー
            console.error(response.message);
            throw new Error(response.message);
        }
    }
}

/**
 * エラーメッセージ取得
 * @param error エラーオブジェクト
 * @return Error messages
 */
export const getErrorMessage = (error) => {
    // UI API DML, Apex and network errors
    if (error.body && typeof error.body.message === 'string') {
        return error.body.message;
    }
    // JS errors
    else if (typeof error.message === 'string') {
        return error.message;
    }
    // Unknown error shape so try HTTP status text
    else if (error.statusText){
        return error.statusText;
    }
    return '';
}