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);
}