refresh-token-util-for-rtk-query
Version:
Reusable RTK Query baseQuery with refresh token
70 lines (55 loc) • 2.21 kB
Markdown
with refresh token support.
```sh
npm install refresh-token-util-for-rtk-query
```
> This package requires `@reduxjs/toolkit` and `react` as peer dependencies.
```ts
import {
createAuthBaseQuery,
tokenStorage,
} from "refresh-token-util-for-rtk-query";
import { createApi } from "@reduxjs/toolkit/query/react";
const apiBaseUrl = "your_api_url";
export const authApi = createApi({
reducerPath: "authApi",
baseQuery: createAuthBaseQuery({
baseUrl: apiBaseUrl,
refreshPath: "auth/token", // path for the refresh token request
getAccessToken: tokenStorage.getAccessToken, // function to get the access token
getRefreshToken: tokenStorage.getRefreshToken, // function to get the refresh token
saveTokens: tokenStorage.saveTokens, // function to save tokens
clearTokens: tokenStorage.clearTokens, // function to clear tokens in local storage
buildRefreshPayload: (refreshToken) => ({ // function to build the payload for the refresh request
grant_type: "refresh_token",
refresh_token: refreshToken,
}),
accessTokenResponseKey: "access_token", // key for access token in the response
refreshTokenResponseKey: "refresh_token", // key for refresh token in the response
}),
endpoints: (builder) => ({
// Your endpoints here
}),
});
```
Creates an RTK Query baseQuery with refresh token support.
**Options:**
- `baseUrl` — base API URL
- `refreshPath` — path for the refresh token request
- `getAccessToken` — function to get the access token
- `getRefreshToken` — function to get the refresh token
- `saveTokens` — function to save tokens
- `clearTokens` — function to clear tokens
- `buildRefreshPayload` — function to build the payload for the refresh request
- `accessTokenResponseKey` — key for access token in the response
- `refreshTokenResponseKey` — key for refresh token in the response
Utilities for storing tokens (e.g., in localStorage).
- `getAccessToken()`
- `getRefreshToken()`
- `saveTokens({ accessToken, refreshToken })`
- `clearTokens()`
Reusable RTK Query baseQuery