Criando seu Próprio Cliente
Aprenda a extender o Xcrap com novos adaptadores HTTP ou de Navegador.
Se os clientes oficiais não atenderem às suas necessidades, você pode criar o seu próprio estendendo as bases fornecidas pelo @xcrap/core.
Implementando a Interface ClientInterface
Seu cliente precisa implementar o método fetch e opcionalmente o fetchMany.
import {
BaseClient,
ClientInterface,
HttpResponse,
ClientRequestOptions
} from "@xcrap/core";
export class MeuClienteCustomizado
extends BaseClient<any>
implements ClientInterface
{
async fetch(options: ClientRequestOptions): Promise<HttpResponse> {
// 1. Sua lógica de requisição (ex: usando lib nativa de rede)
const rawResult = await minhaLibExtrema(options.url);
// 2. Retornar sempre um HttpResponse
return new HttpResponse({
status: 200,
statusText: "OK",
body: rawResult.data,
headers: rawResult.headers,
attempts: 1,
failedAttempts: []
});
}
// fetchMany já tem uma implementação padrão na BaseClient,
// mas você pode sobrescrevê-la se necessário.
}Por que estender BaseClient?
Ao herdar de BaseClient, seu cliente ganha automaticamente:
- Suporte a funções dinâmicas de User-Agent e Proxy.
- Lógica de throttling para
fetchMany. - Compatibilidade total com o
@xcrap/factory.
Boas Práticas
- HttpResponse: Sempre encapsule sua resposta na classe
HttpResponsepara que os usuários possam usar.asHtmlParser(),.asJsonParser(), etc. - Tratamento de Erros: Lance erros padronizados do
@xcrap/core(ex:InvalidStatusCodeError) para manter a consistência do framework.