This plugin is used to cache any API.
$ npm i gatsby-plugin-cache-api
or
$ yarn add gatsby-plugin-cache-api
import the function cacheApi
in your gatsby-node.js
.
const cacheApi = require('gatsby-plugin-cache-api'); exports.onPreInit = async () => { const api = await fetch('https://dog.ceo/api/breeds/list/all'); const json = await api.json(); const defineCache = { pathOutput: 'js/json', nameOutPath: 'breeds.json', file: json.message, }; cacheApi(defineCache); };
In your component do a fetch directly in your application
const MyComponent = () => { const [breeds, setBreeds] = useState([]); useEffect(()=> { const api = await fetch('./js/json/breeds.json'); //- cache const json = await api.json(); const parseBreeds = Object.keys(json.message) setBreeds(parseBreeds); }, []) return <div> {breeds.map((breed)=> <p key={breed}>{breed}</p>)} </div>; }; export default MyComponent;
In the terminal you will see a success log with the path and name of the generated file
The code is available under the MIT License.