diff --git a/docs/examples.md b/docs/examples.md index d53129939..5fb0dc095 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -140,6 +140,76 @@ try { +
+openapi-axios by @web-bee-ru + +::: code-group + +```ts [test/my-project.ts] +import { OpenApiAxios } from "@web-bee-ru/openapi-axios"; +import type { paths } from "./my-openapi-3-schema"; // generated by openapi-typescript +import Axios from "axios"; + +const axios = Axios.create({ + baseURL: "https://myapi.dev/v1", + adapter: "fetch", // strongly recommended (available since axios@1.7.0) +}); + +// Example 1. Usage with "axios" (default) status handling strategy (validStatus: 'axios') + +const api = new OpenApiAxios(axios, { validStatus: "axios" }); // throws like axios (e.g. status 400+, network errors, interceptor errors) +// const api = new OpenApiAxios(axios) // same result + +try { + const { status, data, response } = await api.get("/users"); +} catch (err) { + if (api.isAxiosError(err)) { + if (typeof err.status === "number") { + // status >= 400 + } + // request failed (e.g. network error) + } + throw err; // axios.interceptors error +} + +// Example 2. Usage with "fetch" status handling strategy (validStatus: 'fetch') + +const fetchApi = new OpenApiAxios(axios, { validStatus: "fetch" }); // throws like browser's fetch() (e.g. network errors, interceptor errors) + +try { + const { status, data, error, response } = await api.get("/users"); + + if (error) { + // status >= 400 + } +} catch (err) { + if (api.isAxiosError(err)) { + // request failed (e.g. network error) + } + throw err; // axios.interceptors error +} + +// Example 3. Usage with "safe" status handling strategy (validStatus: 'all') +// (No try/catch required) + +const safeApi = new OpenApiAxios(axios, { validStatus: "all" }); // never throws errors + +const { status, data, error, response } = await api.get("/users"); + +if (error) { + if (typeof status === "number") { + // status >= 400 + } else if (api.isAxiosError(error)) { + // request failed (e.g. network error) + } + throw error; // axios.interceptors error +} +``` + +::: + +
+ ::: tip