Saltar al contenido principal

Política de errores de Endpoint

Endpoint.errorPolicy controla el comportamiento de la caché cuando un fetch es rechazado. Usa el error del rechazo para determinar si debe tratarse como un error 'soft' (suave) o 'hard' (duro).

Soft​

Los errores soft siguen mostrando datos válidos si existen. Sin embargo, si no hay datos previos en el store, se rechazará con error. En este caso useSuspense() lanza el error para que lo capture el onErrorCaptured() más cercano

Hard​

Los errores hard siempre se rechazan con error, incluso cuando antes ya había datos disponibles.

Tanto 'hard' como undefined se pueden usar para indicar este estado.

<script setup lang="ts">
  import { useSuspense } from '@data-client/vue';
  import { lastUpdated } from './api/lastUpdated';

  const props = defineProps<{ id: string }>();
  const time = await useSuspense(lastUpdated, () => ({ id: props.id }));
</script>

<template>
  <div>
    API time:
    <time>{{ time.updatedAt.toLocaleString('en-US', { timeStyle: 'long' }) }}</time>
  </div>
</template>

Política para RestEndpoint​

Como los 500 indican un fallo del servidor, queremos usar datos obsoletos si existen. En cambio, algo como un 4xx indica un 'error del usuario', lo que significa que el error señala algo sobre el flujo de la aplicación, por ejemplo, que un registro fue eliminado y por eso se obtiene un 404. Conservar el registro sería incorrecto.

Como este es el comportamiento típico de las APIs REST, es la política por defecto en @data-client/rest

errorPolicy(error) {
return error.status >= 500 ? 'soft' : undefined;
}

undefined es otra forma de especificar un error hard