Pular para o conteúdo principal

Política de erros do Endpoint

Endpoint.errorPolicy controla o comportamento do cache quando um fetch é rejeitado. Ele usa o erro da rejeição para determinar se deve ser tratado como um erro 'soft' (leve) ou 'hard' (grave).

Soft​

Erros soft continuam exibindo dados válidos, se existirem. No entanto, se não houver dados anteriores na store, a promise será rejeitada com error. Nesse caso, useSuspense() lança o erro para ser capturado pelo onErrorCaptured() mais próximo

Hard​

Erros hard sempre rejeitam com error - mesmo quando dados já haviam sido disponibilizados anteriormente.

'hard' | undefined podem ser usados 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 erros 500 indicam uma falha do servidor, queremos usar dados desatualizados caso existam. Por outro lado, algo como um 4xx indica 'erro do usuário', o que significa que o erro indica algo sobre o fluxo da aplicação - por exemplo, quando um registro é excluído, resultando em 404. Manter o registro seria impreciso.

Como este é o comportamento típico de APIs REST, ele é a política padrão em @data-client/rest

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

undefined é outra forma de especificar um erro hard