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 HTTPstatusText: Mensagem do status HTTPheaders: Objeto com cabeçalhos da resposta
Métodos
json(): Método assíncrono para analisar o corpo da resposta como JSONtext(): Método assíncrono para analisar o corpo da resposta como textoblob(): Método assíncrono para analisar o corpo da resposta como BlobarrayBuffer(): Método assíncrono para analisar o corpo da resposta como ArrayBufferclone(): 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- BadRequest402- PaymentRequired401- Unauthorized403- Forbidden404- NotFound405- MethodNotAllowed406- NotAcceptable407- ProxyAuthenticationRequired408- RequestTimeout409- Conflict410- Gone411- LengthRequired412- PreconditionFailed413- RequestTooLong414- RequestUriTooLong415- UnsupportedMediaType416- RequestedRangeNotSatisfiable417- ExpectationFailed418- ImATeapot421- MisdirectedRequest422- UnprocessableEntity423- Locked424- FailedDependency426- UpgradeRequired428- PreconditionRequired429- TooManyRequests431- RequestHeaderFieldsTooLarge451- UnavailableForLegalReasons
Erros de Servidor (5xx)
500- InternalServer501- NotImplemented502- BadGateway503- ServiceUnavailable504- GatewayTimeout505- HttpVersionNotSupported507- InsufficientStorage511- 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);
}