From b221a83ecef1dd7f9583d5107017d24e668205a6 Mon Sep 17 00:00:00 2001 From: Kamal Wickramanayake Date: Thu, 2 Jul 2026 20:17:44 +0530 Subject: Added React global state + role based security sample app --- react/08-auth-with-context/src/services/api.js | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 react/08-auth-with-context/src/services/api.js (limited to 'react/08-auth-with-context/src/services/api.js') diff --git a/react/08-auth-with-context/src/services/api.js b/react/08-auth-with-context/src/services/api.js new file mode 100644 index 0000000..215ee1b --- /dev/null +++ b/react/08-auth-with-context/src/services/api.js @@ -0,0 +1,37 @@ +import axios from 'axios'; + +const api = axios.create({ + baseURL: '/bff/api', // Example value: https://www.example.com + timeout: 30000, // 30 seconds + headers: { 'Content-Type': 'application/json' }, + withCredentials: true +}); + +// Request Interceptor (Optional: Add Authorization Headers) +/* +api.interceptors.request.use( + (request) => { + console.log("API Request:", request); + return request; + }, + (error) => Promise.reject(error) +); +*/ + +// Response Interceptor for Centralized Error Handling +api.interceptors.response.use( + (response) => { + return response; + }, + (error) => { + console.error("API ERROR:", error.response || error.message); + + if (window.confirm("A network error occured. Try reloading the page?")) { + window.location.href = "/bff/ui"; + } + + return Promise.reject(error); + } +); + +export default api; \ No newline at end of file -- cgit v1.2.3