Heim >Web-Frontend >js-Tutorial >Wie gehe ich mit Nicht-OK-Statuscodes mit Fetch in Redux und Redux-Promise-Middleware um?

Wie gehe ich mit Nicht-OK-Statuscodes mit Fetch in Redux und Redux-Promise-Middleware um?

DDD
DDDOriginal
2024-11-15 14:52:021020Durchsuche

How to Handle Non-OK Status Codes with Fetch in Redux and redux-promise-middleware?

Abrufen: Umgang mit Nicht-OK-Statuscodes mit Ablehnung und Fehlererkennung

Der bereitgestellte Code nutzt die Polyfüllung „whatwg-fetch“ in Redux und Redux-Promise-Middleware für den Datenabruf. Das Problem liegt jedoch in der Handhabung von Nicht-OK-Statuscodes (4xx und 5xx), da Fetch-Zusagen normalerweise nur bei Netzwerkfehlern abgelehnt werden.

Ablehnungsbehandlung

Um sicherzustellen Wenn Sie das Versprechen mit einer benutzerdefinierten Fehlermeldung für Nicht-OK-Statuscodes ablehnen, sollten Sie den folgenden Ansatz in Betracht ziehen:

import 'whatwg-fetch';

function fetchVehicle(id) {
    return dispatch => {
        return dispatch({
            type: 'FETCH_VEHICLE',
            payload: fetch(`http://swapi.co/api/vehicles/${id}/`)
                .then(res => res.json())
                .then(data => {
                    if (!res.ok) {
                        throw new Error(`Non-OK status code: ${res.status}`);
                    }
                    return data;
                })
                .catch(error => {
                    throw error;
                })
        });
    };
}

Fehlererkennung

Im Aktionsersteller ein Ein Fehler wird ausgelöst, wenn der Antwortstatus nicht OK ist. Dieser Fehler kann bei der Verarbeitung der Aktion im Reduzierer abgefangen werden.

Beispielreduzierer:

case 'FETCH_VEHICLE': {
    return {
        ...state,
        isLoading: true,
    };
}
case 'FETCH_VEHICLE_FULFILLED': {
    return {
        ...state,
        isLoading: false,
        vehicle: action.payload,
    };
}
case 'FETCH_VEHICLE_REJECTED': {
    return {
        ...state,
        isLoading: false,
        error: action.payload,
    };
}

In diesem aktualisierten Code enthält die Nutzlast der Aktion „FETCH_VEHICLE_REJECTED“ die im Aktionsersteller erstellte Fehlermeldung. Dies ermöglicht eine ordnungsgemäße Fehlerbehandlung und -anzeige innerhalb der Anwendung.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nicht-OK-Statuscodes mit Fetch in Redux und Redux-Promise-Middleware um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn