refresh-token-util-for-rtk-query
v1.3.0
Published
Reusable RTK Query baseQuery with refresh token
Downloads
12
Maintainers
Readme
refresh-token-util-for-rtk-query
Reusable RTK Query baseQuery with refresh token support.
Installation
npm install refresh-token-util-for-rtk-queryThis package requires
@reduxjs/toolkitandreactas peer dependencies.
Quick Start
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
}),
});API
createAuthBaseQuery(options)
Creates an RTK Query baseQuery with refresh token support.
Options:
baseUrl— base API URLrefreshPath— path for the refresh token requestgetAccessToken— function to get the access tokengetRefreshToken— function to get the refresh tokensaveTokens— function to save tokensclearTokens— function to clear tokensbuildRefreshPayload— function to build the payload for the refresh requestaccessTokenResponseKey— key for access token in the responserefreshTokenResponseKey— key for refresh token in the response
tokenStorage
Utilities for storing tokens (e.g., in localStorage).
getAccessToken()getRefreshToken()saveTokens({ accessToken, refreshToken })clearTokens()
