Pular para o conteúdo

Requisições cruas

Os métodos gerados são a forma recomendada para o dia a dia porque carregam tipos de parâmetros e resposta. Mas às vezes você precisa chamar uma rota que ainda não está na SDK, testar um endpoint novo ou fazer uma chamada mais direta.

Para isso, o Cinderace expõe helpers no estilo Axios que usam a mesma baseUrl, o mesmo token e o mesmo fetch dos métodos gerados.

const { data, status, headers } = await sdk.get("/raffles/active", {
params: {
page: 1
}
});
console.log(status);
console.log(data);
const response = await sdk.post("/user/sign-in", {
captcha: "<token-do-captcha>",
cpf: "00000000000",
password: "senha"
});
await sdk.put("/user/profile", {
name: "Maria Silva"
});
await sdk.patch("/user/profile", {
name: "Maria Souza"
});
await sdk.delete("/user/payment-method/card-id");

Quando o método é dinâmico, use a forma de configuração:

const response = await sdk.request({
method: "PATCH",
url: "/user/profile",
data: {
name: "Maria Silva"
}
});

Toda chamada crua devolve:

interface LMResponse<T> {
data: T;
status: number;
statusText: string;
headers: Headers;
}

Diferente dos métodos gerados, que devolvem direto o body tipado, o modo cru devolve o envelope completo.

Opção Para que serve
params Query string. Aceita objeto ou URLSearchParams.
data Body. Objetos viram JSON; FormData, Blob, ArrayBuffer e strings passam direto.
headers Headers extras daquela chamada.
signal AbortSignal para cancelar a requisição.
responseType json, text, arrayBuffer ou blob.
validateStatus Define o que conta como sucesso. O padrão é 2xx.

Por padrão, status fora de 2xx lança LMSdkError:

import { LMSdkError } from "@luckymaker/sdk-core";
try {
await sdk.get("/missing");
} catch (error) {
if (error instanceof LMSdkError) {
console.log(error.status);
console.log(error.code);
console.log(error.body);
}
}

Para tratar o status sem exceção:

const response = await sdk.get("/missing", {
validateStatus: (status) => status < 500
});
console.log(response.status);

Os helpers usam o mesmo cliente:

const sdk = new LMSdk({
baseUrl: "api.sualoja.com.br"
});
// GET https://api.sualoja.com.br/v1/raffles/active?page=1
await sdk.get("/raffles/active", { params: { page: 1 } });

Se a sessão estiver autenticada, o header vai junto automaticamente:

Authorization: Bearer <token>