Com npm
npm install use-swagger
pnpm add use-swagger
yarn add use-swagger
Siga os passos abaixo para integrar use-swagger em seu projeto e gerar tipos automaticamente a partir de uma URL Swagger.
- Crie uma pasta chamada
client
no diretório do seu projeto. - Dentro da pasta
client
, crie um arquivo chamadogenerate.ts
.
No arquivo generate.ts
, adicione o seguinte código:
const fs = require("fs");
const { generateSwaggerTypes } = require("use-swagger");
generateSwaggerTypes({
fs, // Importante: o 'fs' é uma dependência necessária para manipular arquivos no sistema // npm install fs
fsPath: "./client/swagger_client.ts", // Caminho onde o arquivo será injetado ao rodar o script
swaggerUrl: "https://.../swagger.json" // URL do seu arquivo swagger.json, que contém as definições das APIs
});
Para facilitar a geração dos tipos, adicione o seguinte script ao seu package.json
:
"scripts": {
"generateSwagger": "node client/generate.ts"
}
npm run generateSwagger
Agora, crie um arquivo chamado client.ts
na mesma pasta client
que você criou anteriormente.
No arquivo client.ts
, adicione o seguinte código:
import { createClient } from "use-swagger";
import { Swagger } from "./swagger_client";
export const { client, useSwagger } = createClient<Swagger>({
fetcher: async ({ url, method, body, headers }) => {
return fetch(((process.env.api as string) + url), {
method,
body: body ? JSON.stringify(body) : undefined,
headers
}).then((res) => res.json());
},
defaultHeaders: { tenantId: process.env.tenantId || "" },
});
No arquivo app.tsx
, adicione o seguinte código:
import { QueryClientSwaggerContextProvider } from "use-swagger";
...
<QueryClientSwaggerContextProvider>
...
</QueryClientSwaggerContextProvider>
...
Após configurar o cliente, você pode utilizá-lo para fazer requisições à sua API. Abaixo está um exemplo simples de como usar o client
:
import { client } from "..."; // ajuste o caminho conforme necessário
const res = await client({
url: "/HelloWorld", // O endpoint da sua API
method: "get", // O método HTTP a ser utilizado (GET, POST, etc.)
body: {}, // Object Params/RequestBody de acordo com a url selecionada
headers: { anyHeader: "--" } // Cabeçalhos individuais deste end-point
});
Para fazer requisições usando useSwagger
, você deve configurá-lo da seguinte forma:
const res = useSwagger({
url: "/Blog/categorias", // O endpoint da sua API
method: "get", // O método HTTP a ser utilizado (GET, POST, etc.)
enableCache: true, // Ativa o cache para a requisição (Opcional)
enabled: false, // Habilita ou desabilita a execução do hook (Opcional)
interval: 1000 * 60, // Intervalo em milissegundos para re-fetch (Opcional)
onError: () => {}, // Função de callback em caso de erro (Opcional)
queryKey: ["MyCustomKey", param1, param2] // Chave para identificação da consulta (Opcional)
});
Parâmetro | Tipo | Descrição |
---|---|---|
url |
string |
O caminho do endpoint que você deseja acessar. Exemplo: "/Blog/categorias" . |
method |
string |
O método HTTP que será utilizado para a requisição (e.g., get , post ). |
enableCache |
boolean |
Ativa o cache para os resultados da requisição, melhorando a performance em chamadas repetidas. |
enabled |
boolean |
Habilita ou desabilita a execução do hook, útil para controlar quando a requisição deve ser feita. |
interval |
number |
Define o intervalo (em milissegundos) entre re-fetches automáticos. O padrão é 1000 * 60 (1 minuto). |
onError |
function |
Função que será chamada em caso de erro na requisição. Você pode usar isso para lidar com erros de forma personalizada. |
queryKey |
array |
Um array que contém chaves para identificação da consulta e para controle do cache. |