Skip to content

Classes de Erro

Todas as classes de erro HTTP estendem BaseHttpError (que estende Error) com as seguintes propriedades e métodos:

Classe Base HTTP Error

A classe BaseHttpError fornece uma interface consistente para todos os erros HTTP:

Propriedades

  • status: Número do código de status HTTP
  • statusText: Mensagem do status HTTP
  • headers: Objeto com cabeçalhos da resposta

Métodos

  • json(): Método assíncrono para analisar o corpo da resposta como JSON
  • text(): Método assíncrono para analisar o corpo da resposta como texto
  • blob(): Método assíncrono para analisar o corpo da resposta como Blob
  • arrayBuffer(): Método assíncrono para analisar o corpo da resposta como ArrayBuffer
  • clone(): Método para clonar o erro para múltiplas leituras do corpo da resposta

Todas as classes de erro são exportadas individualmente para otimização de tree-shaking e herdam essas capacidades.

Códigos de Status HTTP Suportados

A biblioteca fornece cobertura abrangente dos códigos de status de erro HTTP. Para informações detalhadas sobre cada código de status, veja a Referência de Status HTTP do MDN.

Erros de Cliente (4xx)

  • 400 - BadRequest
  • 402 - PaymentRequired
  • 401 - Unauthorized
  • 403 - Forbidden
  • 404 - NotFound
  • 405 - MethodNotAllowed
  • 406 - NotAcceptable
  • 407 - ProxyAuthenticationRequired
  • 408 - RequestTimeout
  • 409 - Conflict
  • 410 - Gone
  • 411 - LengthRequired
  • 412 - PreconditionFailed
  • 413 - RequestTooLong
  • 414 - RequestUriTooLong
  • 415 - UnsupportedMediaType
  • 416 - RequestedRangeNotSatisfiable
  • 417 - ExpectationFailed
  • 418 - ImATeapot
  • 421 - MisdirectedRequest
  • 422 - UnprocessableEntity
  • 423 - Locked
  • 424 - FailedDependency
  • 426 - UpgradeRequired
  • 428 - PreconditionRequired
  • 429 - TooManyRequests
  • 431 - RequestHeaderFieldsTooLarge
  • 451 - UnavailableForLegalReasons

Erros de Servidor (5xx)

  • 500 - InternalServer
  • 501 - NotImplemented
  • 502 - BadGateway
  • 503 - ServiceUnavailable
  • 504 - GatewayTimeout
  • 505 - HttpVersionNotSupported
  • 507 - InsufficientStorage
  • 511 - NetworkAuthenticationRequired

Erros de Rede

  • NetworkError - Para problemas de conexão, timeouts e outras falhas relacionadas à rede

Trabalhando com Corpos de Resposta de Erro

Todas as classes de erro HTTP fornecem múltiplas formas de acessar o corpo da resposta:

typescript
import { typedFetch, BadRequestError } from '@pbpeterson/typed-fetch';

const { error } = await typedFetch('/api/users');

if (error && error instanceof BadRequestError) {
  // Analisar como JSON (comum para erros de API)
  const errorDetails = await error.json();
  console.log('Detalhes do erro:', errorDetails);
  
  // Analisar como texto
  const errorText = await error.text();
  console.log('Mensagem de erro:', errorText);
  
  // Analisar como blob (para dados binários)
  const errorBlob = await error.blob();
  
  // Analisar como array buffer (para bytes brutos)
  const errorBuffer = await error.arrayBuffer();
  
  // Acessar cabeçalhos
  console.log('Content-Type:', error.headers.get('content-type'));
  console.log('Status:', error.status, error.statusText);
}

Clonagem de Resposta de Erro

Todas as classes de erro HTTP suportam clonagem de resposta, permitindo ler o corpo da resposta múltiplas vezes:

typescript
const { error } = await typedFetch('/api/users');

if (error && 'clone' in error) {
  const clonedError = error.clone();
  
  // Ambos podem analisar corpos de resposta independentemente
  const originalData = await error.json();
  const clonedData = await clonedError.text(); // Formato diferente!
  
  console.log('Dados JSON:', originalData);
  console.log('Dados texto:', clonedData);
}

Lançado sob a Licença MIT.