absent-sapphire•3y ago
Cache master call
How can i extend simple rest api dataprovider so i can make a custom api to fetch some master data and cache it??
5 Replies
Hi @dreamer9067. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
To extend the Simple REST data provider and make a custom API call to fetch some master data, you can use the
custom method provided by Refine. This method allows you to handle requests with custom parameters like URL, CRUD methods, and configurations. It's useful if you have non-standard REST API endpoints or want to make a connection with external resources.
Here's an example of how you can define the custom method:
The custom method can be consumed using the useCustom data hook. Here's an example:
For caching, Refine uses React Query to manage data fetching. React Query handles important concerns like caching, invalidation, loading states, etc.
To customize the Simple REST data provider, you can use the swizzle command from the @refinedev/cli package. Here's how you can do it:
1. Run the swizzle command in the project directory:
2. Select @refinedev/simple-rest from the list of available data providers.
3. Edit the /rest-data-provider/index.ts file to customize the data provider.
4. Pass the customized data provider to the dataProvider prop of the Refine component.
For more information, refer to the following documentation:
- Customizing the data provider (https://refine.dev/docs/packages/documentation/data-providers/simple-rest)
- Custom method (https://refine.dev/docs/api-reference/core/providers/data-provider)
- useCustom data hook (https://refine.dev/docs/api-reference/core/hooks/data/useCustom/)
- Simple REST data provider (https://refine.dev/docs/packages/documentation/data-providers/simple-rest)
- Data Provider Logic (https://refine.dev/blog/refine-vs-react-admin)
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@560876002046377984> kapa.ai is still learning and improving, please let us how it did by reacting below
absent-sapphireOP•3y ago
@kapa.ai where is the caching implemented??
Let me check the knowledge base for you. One moment! :books:
----------------------
Caching in Refine is implemented using React Query. React Query is a data fetching library that provides features like caching, synchronization, and background updates.
In Refine, caching is used in various places such as access control checks and data fetching. For example, when checking for access control in your app, you can configure the
staleTime and cacheTime properties to cache the access control checks. This can be done easily as Refine uses React Query.
Here's an example of how you can configure caching for access control checks:
In this example, staleTime is set to 5 minutes. This means that the data fetched from this query will be considered fresh for 5 minutes. After this time, React Query will attempt to refetch the data in the background when the component re-renders or when the refetch method is called.
By default, Refine uses 5 minutes for cacheTime and 0 minutes for staleTime for its own access control points.
For more information, refer to the following documentation:
- Access Control Provider (https://refine.dev/docs/api-reference/core/providers/accessControl-provider)
- useCan hook (https://refine.dev/docs/api-reference/core/hooks/accessControl/useCan)
- React Query (https://react-query.tanstack.com/reference/useQuery)
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@560876002046377984> kapa.ai is still learning and improving, please let us how it did by reacting below