@decathlon/moon-axios

Axios for moon

Usage no npm install needed!

<script type="module">
  import decathlonMoonAxios from 'https://cdn.skypack.dev/@decathlon/moon-axios';
</script>

README

@decathlon/moon-axios

The power of react-query with Axios

@decathlon/moon is the Axios HTTP client for Moon.

Installation

npm install @decathlon/moon @decathlon/moon-axios react-query axios --save

Usage

Please see the Moon doc for more details.

import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios";
import { MoonProvider, ILink } from "@decathlon/moon";
import axiosClientFactory from "@decathlon/moon-axios";

function successHandler(response: AxiosResponse){...};

function setLanguage(config: AxiosRequestConfig): AxiosRequestConfig | Promise<AxiosRequestConfig> {
  return {
    ...config,
    headers: {
      ...config.headers,
      "Accept-Language": "en"
    }
  };
}

const requestInterceptors = [{ onFulfilled: setLanguage }];

const responseInterceptors = [{ onFulfilled: successHandler }];


const links: ILink<AxiosInstance, AxiosRequestConfig, AxiosResponse>[] = [
  {
    id: "FOO",
    config: { baseURL: "http://foo.com" }, // AxiosRequestConfig
    interceptors: { request: requestInterceptors, response: responseInterceptors }
  }
];

const App = () => {
  return (
    <MoonProvider links={links} clientFactory={axiosClientFactory}>
      <MyComponent />
    </MoonProvider>
  );
};

Once your MoonProvider is hooked up, you're ready to start requesting !