ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ API ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು: CORS ಪ್ಲಗಿನ್ ಸವಾಲುಗಳು
API ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ರಿಯಾಕ್ಟ್ಜೆಎಸ್, ಡೆವಲಪರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾ ಪಡೆಯುವಿಕೆಗೆ ಸಂಬಂಧಿಸಿದ ವಿವಿಧ ಸವಾಲುಗಳನ್ನು ಎದುರಿಸುತ್ತಾರೆ, ವಿಶೇಷವಾಗಿ ಮೂರನೇ-ಪಕ್ಷದ APIಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ. ಉದ್ಭವಿಸುವ ಒಂದು ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆ ಎಂದರೆ "ಹಿಡಿಯಲಾಗದ ನಿರಾಕರಣೆ (ಟೈಪ್ಎರರ್): ತರಲು ವಿಫಲವಾಗಿದೆ" ದೋಷ. ಅನೇಕ ಡೆವಲಪರ್ಗಳು ತಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ವರ್ಧಿಸಲು ಬಳಸುವ Swiggy ನ ರೆಸ್ಟೋರೆಂಟ್ ಪಟ್ಟಿ API ನಂತಹ ಜನಪ್ರಿಯ API ಗಳನ್ನು ಬಳಸುವಾಗಲೂ ಈ ದೋಷ ಸಂಭವಿಸಬಹುದು.
ಈ ಸಂದರ್ಭದಲ್ಲಿ, CORS Chrome ವಿಸ್ತರಣೆಯನ್ನು ಸೇರಿಸುವುದು ನಿರ್ಬಂಧಿತ ಬ್ರೌಸರ್ ನೀತಿಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ಕಾರ್ಯಸಾಧ್ಯವಾದ ಪರಿಹಾರದಂತೆ ತೋರಬಹುದು. ಆದಾಗ್ಯೂ, ಇದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಬದಲು ಹೊಸ ತೊಡಕುಗಳನ್ನು ಪರಿಚಯಿಸಬಹುದು. ನಿಮ್ಮ ಅಭಿವೃದ್ಧಿ ಪರಿಸರದಲ್ಲಿ ನೀವು CORS ಪ್ಲಗಿನ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ಮತ್ತು ನಿಮ್ಮ API ವಿನಂತಿಗಳು ಲೋಡ್ ಆದ ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ವಿಫಲವಾದರೆ, ಬ್ರೌಸರ್ನ ವಿನಂತಿ-ನಿರ್ವಹಣೆಯ ನಡವಳಿಕೆಯೊಂದಿಗೆ ಪ್ಲಗಿನ್ ಸಂಘರ್ಷಗೊಳ್ಳುವ ಸಮಸ್ಯೆಯನ್ನು ನೀವು ಎದುರಿಸುತ್ತಿರಬಹುದು.
ಕ್ರಾಸ್-ಆರಿಜಿನ್ ವಿನಂತಿಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಮತ್ತು ದೋಷನಿವಾರಣೆ ಮಾಡುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು CORS ದೋಷಗಳು ಸುಗಮ ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಗೆ ReactJS ನಲ್ಲಿ ಅತ್ಯಗತ್ಯ. Swiggy ಯಂತಹ APIಗಳು ಅನಧಿಕೃತ ಕ್ಲೈಂಟ್ಗಳಿಂದ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಲು CORS ನಂತಹ ಭದ್ರತಾ ಪದರಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ. ಈ ನಿರ್ಬಂಧಗಳು ಸರಿಯಾಗಿ ತಿಳಿಸಬೇಕಾದ ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿ, ವಿಶೇಷವಾಗಿ Chrome ನಲ್ಲಿ CORS ಪ್ಲಗಿನ್ ಅನ್ನು ಸೇರಿಸಿದ ನಂತರ ಈ ದೋಷ ಏಕೆ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ಅನ್ವೇಷಿಸುತ್ತೇವೆ. ನಿಮ್ಮ Swiggy API ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಅದನ್ನು ಪರಿಹರಿಸಲು ನಾವು ತಂತ್ರಗಳನ್ನು ಚರ್ಚಿಸುತ್ತೇವೆ ಪ್ರತಿಕ್ರಿಯಿಸಿ ಅಪ್ಲಿಕೇಶನ್ಗಳು.
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
fetch() | Swiggy API ಗೆ HTTP ವಿನಂತಿಗಳನ್ನು ಮಾಡಲು ಈ ಆಜ್ಞೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಇದು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅಸಮಕಾಲಿಕವಾಗಿ ಪಡೆಯುತ್ತದೆ ಮತ್ತು ಭರವಸೆಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಇದು ಪ್ರತಿಕ್ರಿಯೆ ವಸ್ತುವಿಗೆ ಪರಿಹರಿಸುತ್ತದೆ. API ನಿಂದ ರೆಸ್ಟೋರೆಂಟ್ ಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯಲು ಇದು ಪ್ರಮುಖವಾಗಿದೆ. |
useEffect() | ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ಬಳಸಲಾಗಿದೆ, ಘಟಕವನ್ನು ರೆಂಡರ್ ಮಾಡಿದ ನಂತರ API ಕರೆಗಳಂತಹ ಅಡ್ಡ ಪರಿಣಾಮಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಈ ಹುಕ್ ಅನುಮತಿಸುತ್ತದೆ. ಘಟಕವನ್ನು ಅಳವಡಿಸಿದ ನಂತರ Swiggy ನ API ಗೆ ಪಡೆಯುವ ವಿನಂತಿಯನ್ನು ಮಾಡಲಾಗಿದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
res.setHeader() | ಈ ಎಕ್ಸ್ಪ್ರೆಸ್ ಆಜ್ಞೆಯು ಕಸ್ಟಮ್ HTTP ಹೆಡರ್ಗಳನ್ನು ಹೊಂದಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಪ್ರವೇಶ-ನಿಯಂತ್ರಣ-ಅನುಮತಿ-ಮೂಲCORS ನಿರ್ವಹಣೆಯಲ್ಲಿ ಇದು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಇದು ಯಾವುದೇ ಮೂಲದಿಂದ ವಿನಂತಿಗಳನ್ನು ಅನುಮತಿಸಲು ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ, CORS ದೋಷಗಳನ್ನು ತಡೆಯುತ್ತದೆ. |
res.json() | ಕ್ಲೈಂಟ್ಗೆ JSON ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಲು ಈ ವಿಧಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಪರಿಹಾರದಲ್ಲಿ, ಸ್ವಿಗ್ಗಿಯಿಂದ ಪಡೆಯಲಾದ API ಡೇಟಾವನ್ನು JSON ಫಾರ್ಮ್ಯಾಟ್ನಂತೆ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಇದನ್ನು ಮುಂಭಾಗವು ಸುಲಭವಾಗಿ ಸೇವಿಸಬಹುದು. |
await | ಈ ಕೀವರ್ಡ್ ಅಸಿಂಕ್ರೋನಸ್ ಫಂಕ್ಷನ್ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪಡೆಯುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪರಿಹರಿಸುವವರೆಗೆ ವಿರಾಮಗೊಳಿಸುತ್ತದೆ, ಮುಂದುವರೆಯುವ ಮೊದಲು ಕೋಡ್ API ನ ಡೇಟಾಕ್ಕಾಗಿ ಕಾಯುತ್ತಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ನಿರ್ವಹಿಸದ ನಿರಾಕರಣೆಗಳನ್ನು ತಡೆಯುತ್ತದೆ. |
express() | ದಿ ಎಕ್ಸ್ಪ್ರೆಸ್ () ಎಕ್ಸ್ಪ್ರೆಸ್ ಸರ್ವರ್ನ ನಿದರ್ಶನವನ್ನು ರಚಿಸಲು ಕಾರ್ಯವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಡೇಟಾ ಪಡೆಯುವ ಸಮಯದಲ್ಲಿ CORS ಸಮಸ್ಯೆಗಳನ್ನು ತಡೆಗಟ್ಟಲು ಈ ಸರ್ವರ್ ಮುಂಭಾಗ ಮತ್ತು Swiggy API ನಡುವೆ ಪ್ರಾಕ್ಸಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. |
app.listen() | ಈ ಆಜ್ಞೆಯು ಎಕ್ಸ್ಪ್ರೆಸ್ ಸರ್ವರ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಪೋರ್ಟ್ನಲ್ಲಿ ಒಳಬರುವ ವಿನಂತಿಗಳನ್ನು ಕೇಳಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ಪೋರ್ಟ್ 5000). ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಹೋಸ್ಟ್ ಮಾಡಲು ಇದು ನಿರ್ಣಾಯಕವಾಗಿದೆ. |
try...catch | ನೆಟ್ವರ್ಕ್ ವೈಫಲ್ಯಗಳು ಅಥವಾ Swiggy API ಯೊಂದಿಗಿನ ಸಮಸ್ಯೆಗಳಂತಹ, ಪಡೆಯುವ ವಿನಂತಿಯ ಸಮಯದಲ್ಲಿ ಸಂಭವಿಸಬಹುದಾದ ದೋಷಗಳನ್ನು ಈ ಬ್ಲಾಕ್ ನಿರ್ವಹಿಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್ ಕ್ರ್ಯಾಶ್ ಮಾಡುವ ಬದಲು ದೋಷಗಳನ್ನು ಆಕರ್ಷಕವಾಗಿ ನಿಭಾಯಿಸುತ್ತದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
Swiggy API ನೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುವಲ್ಲಿ CORS ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ವಿವರಿಸುವುದು
ಮೊದಲ ಪರಿಹಾರದಲ್ಲಿ, ನಾವು ಎ ರಚಿಸಿದ್ದೇವೆ Node.js Swiggy ನ API ನಿಂದ ರೆಸ್ಟೋರೆಂಟ್ ಡೇಟಾವನ್ನು ಪಡೆದುಕೊಳ್ಳುವಾಗ CORS ಸಮಸ್ಯೆಯನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು Express ಅನ್ನು ಬಳಸುವ ಬ್ಯಾಕೆಂಡ್. ಆ ಡೊಮೇನ್ ಅನುಮತಿಸದ ಹೊರತು ಬೇರೆ ಡೊಮೇನ್ಗೆ ವಿನಂತಿಗಳನ್ನು ಮಾಡುವುದರಿಂದ CORS ನೀತಿಯು ಬ್ರೌಸರ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ. ಸರಳವಾದ ಸರ್ವರ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ, ನಾವು ಕ್ಲೈಂಟ್ ಮತ್ತು API ನಡುವಿನ ಮಧ್ಯದ ಪದರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು, ಡೇಟಾ ಸರ್ವರ್-ಸೈಡ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಅದನ್ನು ರಿಯಾಕ್ಟ್ ಫ್ರಂಟ್-ಎಂಡ್ಗೆ ಹಿಂತಿರುಗಿಸಬಹುದು. ಈ ವಿಧಾನವು CORS ದೋಷಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ ಏಕೆಂದರೆ ವಿನಂತಿಯು ಕ್ಲೈಂಟ್ ಅಪ್ಲಿಕೇಶನ್ನ ಮೂಲದಿಂದ ಬಂದಿದೆ.
ಎಕ್ಸ್ಪ್ರೆಸ್ ಬ್ಯಾಕೆಂಡ್ ಕಸ್ಟಮ್ ಹೆಡರ್ಗಳನ್ನು ಹೊಂದಿಸುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಪ್ರವೇಶ-ನಿಯಂತ್ರಣ-ಅನುಮತಿ-ಮೂಲ, ಇದು ನಮ್ಮ ಕ್ಲೈಂಟ್ CORS ನಿರ್ಬಂಧಗಳನ್ನು ಎದುರಿಸದೆ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವಿನಂತಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. Swiggy ನ API ಗೆ ಕರೆಯನ್ನು ಕರೆಯನ್ನು ಸರ್ವರ್ ಸೈಡ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಡೇಟಾವನ್ನು JSON ಸ್ವರೂಪದಲ್ಲಿ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. API ಕೀಗಳು ಅಥವಾ ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು ಮರೆಮಾಚುವುದರಿಂದ ಈ ವಿಧಾನವನ್ನು ಹೆಚ್ಚಾಗಿ ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಹೆಚ್ಚು ಸುರಕ್ಷಿತ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಇದಲ್ಲದೆ, ಟ್ರೈ-ಕ್ಯಾಚ್ ಬಳಕೆಯು ಸರಿಯಾದ ದೋಷ ನಿರ್ವಹಣೆಯನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ, API ಪ್ರತಿಕ್ರಿಯಿಸಲು ವಿಫಲವಾದಲ್ಲಿ ಬಳಕೆದಾರ-ಸ್ನೇಹಿ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ.
ಎರಡನೇ ಪರಿಹಾರದಲ್ಲಿ, ಕ್ಲೈಂಟ್-ಸೈಡ್ ರಿಯಾಕ್ಟ್ ಕೋಡ್ನಲ್ಲಿ ನಾವು ಪಡೆಯುವ ವಿನಂತಿಯನ್ನು ಮಾರ್ಪಡಿಸುತ್ತೇವೆ. ಈ ವಿಧಾನವು ಕರೆಯಲ್ಲಿ ಕಸ್ಟಮ್ ಹೆಡರ್ಗಳನ್ನು ಸೇರಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, API ಅನ್ನು ತಲುಪುವ ಮೊದಲು ವಿನಂತಿಯನ್ನು ಸರಿಯಾಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ನಾವು ರಿಯಾಕ್ಟ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಬಳಕೆಯ ಪರಿಣಾಮ ಘಟಕವನ್ನು ಆರೋಹಿಸುವಾಗ API ಕರೆಯನ್ನು ಪ್ರಚೋದಿಸಲು ಹುಕ್ ಮಾಡಿ. ಅಸಿಂಕ್ ಕಾರ್ಯವು API ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುತ್ತದೆ, ಅದನ್ನು JSON ಗೆ ಪರಿವರ್ತಿಸುತ್ತದೆ ಮತ್ತು ವಿನಂತಿಯು ವಿಫಲವಾದಲ್ಲಿ ದೋಷಗಳನ್ನು ನಿಭಾಯಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, API ನೇರವಾಗಿ ಬ್ರೌಸರ್ಗಳಿಂದ ಕ್ರಾಸ್-ಆರಿಜಿನ್ ವಿನಂತಿಗಳನ್ನು ಅನುಮತಿಸದಿದ್ದರೆ ಈ ಪರಿಹಾರವು ಇನ್ನೂ CORS ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸುತ್ತದೆ.
ಅಂತಿಮವಾಗಿ, ಮೂರನೇ ಪರಿಹಾರದಲ್ಲಿ, ನಾವು CORS-ಎನಿವೇರ್ ಎಂಬ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಸೇವೆಯನ್ನು ಬಳಸುತ್ತೇವೆ. ಇದು ಮಿಡಲ್ವೇರ್ ಸೇವೆಯಾಗಿದ್ದು, ಅವರ ಸರ್ವರ್ ಮೂಲಕ API ವಿನಂತಿಯನ್ನು ಮರುಹೊಂದಿಸುವ ಮೂಲಕ CORS ನಿರ್ಬಂಧಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ತಾತ್ಕಾಲಿಕವಾಗಿ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಪರಿಹಾರವು ಅಭಿವೃದ್ಧಿ ಪರಿಸರದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದಾದರೂ, ಭದ್ರತಾ ಅಪಾಯಗಳು ಮತ್ತು ಬಾಹ್ಯ ಸೇವೆಗಳ ಮೇಲಿನ ಅವಲಂಬನೆಯಿಂದಾಗಿ ಉತ್ಪಾದನೆಗೆ ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ. ಡೇಟಾ ಪಡೆಯುವ ಪ್ರಕ್ರಿಯೆಗೆ ಹೆಚ್ಚುವರಿ ಪದರವನ್ನು ಸೇರಿಸುವುದರಿಂದ ಇದು ಕಾರ್ಯಕ್ಷಮತೆಯ ಓವರ್ಹೆಡ್ ಅನ್ನು ಸಹ ಪರಿಚಯಿಸುತ್ತದೆ. ಪರೀಕ್ಷಾ ಹಂತಗಳಲ್ಲಿ ಈ ವಿಧಾನವನ್ನು ಬಳಸುವುದು ಅನುಕೂಲಕರವಾಗಿರುತ್ತದೆ ಆದರೆ ಭದ್ರತಾ ಕಾರಣಗಳಿಗಾಗಿ ಉತ್ಪಾದನೆಯಲ್ಲಿ ತಪ್ಪಿಸಬೇಕು.
ಪರಿಹಾರ 1: ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ನೊಂದಿಗೆ CORS ಸಮಸ್ಯೆಗಳನ್ನು ನಿಭಾಯಿಸುವುದು
ಈ ಪರಿಹಾರವು CORS ದೋಷಗಳನ್ನು ತಪ್ಪಿಸಲು ಮತ್ತು Swiggy API ನಿಂದ ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ಪಡೆಯಲು Node.js ಬ್ಯಾಕೆಂಡ್ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.
const express = require('express');
const fetch = require('node-fetch');
const app = express();
const port = 5000;
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET');
next();
});
app.get('/restaurants', async (req, res) => {
try {
const response = await fetch('https://www.swiggy.com/dapi/restaurants/list/v5?lat=23.1685786&lng=79.9338798');
const data = await response.json();
res.json(data);
} catch (err) {
res.status(500).json({ error: 'Failed to fetch restaurants' });
}
});
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});
ಪರಿಹಾರ 2: ಕಸ್ಟಮ್ ಹೆಡರ್ಗಳು ಮತ್ತು ದೋಷ ನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಫ್ರಂಟ್-ಎಂಡ್ ಫೆಚ್ ಅನ್ನು ಬಳಸುವುದು
ಈ ವಿಧಾನವು ಪಡೆಯುವ ವಿನಂತಿಯನ್ನು ನೇರವಾಗಿ ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ಮಾರ್ಪಡಿಸುತ್ತದೆ, ಕಸ್ಟಮ್ ಹೆಡರ್ಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ದೋಷಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ.
import React, { useEffect } from 'react';
const Body = () => {
async function getRestaurants() {
try {
const response = await fetch(
'https://www.swiggy.com/dapi/restaurants/list/v5?lat=23.1685786&lng=79.9338798',
{ headers: { 'Content-Type': 'application/json' } }
);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Fetch error:', error);
}
}
useEffect(() => {
getRestaurants();
}, []);
};
export default Body;
ಪರಿಹಾರ 3: ಅಭಿವೃದ್ಧಿಗಾಗಿ CORS-ಎನಿವೇರ್ ಮಿಡಲ್ವೇರ್ ಅನ್ನು ಬಳಸುವುದು
ಅಭಿವೃದ್ಧಿ ಕ್ರಮದಲ್ಲಿರುವಾಗ CORS ನಿರ್ಬಂಧಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ಈ ವಿಧಾನವು "CORS-ಎನಿವೇರ್" ಸೇವೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಪರಿಹಾರವನ್ನು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಬಳಸಬಾರದು.
const Body = () => {
async function getRestaurants() {
try {
const response = await fetch(
'https://cors-anywhere.herokuapp.com/https://www.swiggy.com/dapi/restaurants/list/v5?lat=23.1685786&lng=79.9338798'
);
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching restaurants:', error);
}
}
useEffect(() => {
getRestaurants();
}, []);
};
export default Body;
API ವಿನಂತಿಗಳಲ್ಲಿ CORS ಸಮಸ್ಯೆಗಳ ದೋಷನಿವಾರಣೆ
ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ "ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ" ದೋಷಕ್ಕೆ ಆಧಾರವಾಗಿರುವ ಕಾರಣಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ಸ್ವಿಗ್ಗಿಯಂತಹ ಮೂರನೇ ವ್ಯಕ್ತಿಯ API ಗಳನ್ನು ಬಳಸುವಾಗ CORS (ಕ್ರಾಸ್-ಆರಿಜಿನ್ ರಿಸೋರ್ಸ್ ಹಂಚಿಕೆ) ನಿರ್ಬಂಧಗಳು. CORS ಎಂಬುದು ಭದ್ರತಾ ವೈಶಿಷ್ಟ್ಯವಾಗಿದ್ದು, ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಅವರು ಸೇವೆ ಸಲ್ಲಿಸಿದ ಡೊಮೇನ್ಗಿಂತ ಬೇರೆ ಡೊಮೇನ್ಗೆ ವಿನಂತಿಗಳನ್ನು ಮಾಡುವುದನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, Swiggy API ವಿನಂತಿಯನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಅದು ಬೇರೆ ಡೊಮೇನ್ನಿಂದ (ನಿಮ್ಮ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್) ಹುಟ್ಟಿಕೊಂಡಿದೆ. ಕ್ರಾಸ್-ಆರಿಜಿನ್ ವಿನಂತಿಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಬೆಂಬಲಿಸದ API ಗಳಿಂದ ನೀವು ಡೇಟಾವನ್ನು ಪಡೆಯುತ್ತಿರುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ಸಮಸ್ಯಾತ್ಮಕವಾಗಿರುತ್ತದೆ.
"ಅನುಮತಿ CORS" Chrome ವಿಸ್ತರಣೆಯಂತಹ ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳನ್ನು ಬಳಸುವುದು ಸಾಮಾನ್ಯ ಪರಿಹಾರವಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಅಂತಹ ವಿಸ್ತರಣೆಗಳು ಅಸಮಂಜಸ ಫಲಿತಾಂಶಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಏಕೆಂದರೆ ಅವರು ಯಾವಾಗಲೂ API ವಿನಂತಿಗಳೊಂದಿಗೆ ಸರಿಯಾಗಿ ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡದ ಬ್ರೌಸರ್ ಮಟ್ಟದ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುತ್ತಾರೆ. ಈ ಪ್ಲಗಿನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಗೆ ಮಾತ್ರ ಬಳಸಬೇಕು ಮತ್ತು ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಅಲ್ಲ. ಉತ್ಪಾದನೆಗಾಗಿ, ಸುರಕ್ಷಿತ ಮತ್ತು ಹೆಚ್ಚು ವಿಶ್ವಾಸಾರ್ಹ ವಿಧಾನವೆಂದರೆ ಬ್ಯಾಕೆಂಡ್ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ಅದು ನಿಮ್ಮ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ನ ಪರವಾಗಿ ಡೇಟಾವನ್ನು ವಿನಂತಿಸುತ್ತದೆ, ಹಿಂದೆ ಒದಗಿಸಿದ ಪರಿಹಾರಗಳಲ್ಲಿ ನೋಡಿದಂತೆ.
ಪರಿಗಣಿಸಬೇಕಾದ ಇನ್ನೊಂದು ಅಂಶವೆಂದರೆ ದೋಷಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುವುದು. CORS ಸಮಸ್ಯೆಗಳು "ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ" ದೋಷಗಳಿಗೆ ಸಾಮಾನ್ಯ ಕಾರಣವಾಗಿದ್ದರೂ, ನೆಟ್ವರ್ಕ್ ಅಸ್ಥಿರತೆ, ತಪ್ಪಾದ API URL ಗಳು ಅಥವಾ ಸರ್ವರ್ ಡೌನ್ಟೈಮ್ನಂತಹ ಇತರ ಅಂಶಗಳು ಈ ದೋಷಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ಆದ್ದರಿಂದ, ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಮುಖ್ಯವಾಗಿದೆ ದೃಢವಾದ ದೋಷ ನಿರ್ವಹಣೆ ನಿಮ್ಮ ಕೋಡ್ನಲ್ಲಿ, ವಿಶೇಷವಾಗಿ ಮೂರನೇ ವ್ಯಕ್ತಿಯ API ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ. ಸರಿಯಾದ ದೋಷ-ನಿರ್ವಹಣೆಯ ಕಾರ್ಯವಿಧಾನವು ಸಮಸ್ಯೆಯನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಡೀಬಗ್ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಏನಾದರೂ ತಪ್ಪಾದಾಗ ಬಳಕೆದಾರ ಸ್ನೇಹಿ ಸಂದೇಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ CORS ಮತ್ತು API ವಿನಂತಿಗಳ ಬಗ್ಗೆ ಸಾಮಾನ್ಯ ಪ್ರಶ್ನೆಗಳು
- CORS ಎಂದರೇನು ಮತ್ತು ಅದು ಏಕೆ ಮುಖ್ಯ?
- CORS (ಕ್ರಾಸ್-ಆರಿಜಿನ್ ಸಂಪನ್ಮೂಲ ಹಂಚಿಕೆ) ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಡೊಮೇನ್ಗಳಿಂದ ದುರುದ್ದೇಶಪೂರಿತ ವಿನಂತಿಗಳನ್ನು ತಡೆಯಲು ಬ್ರೌಸರ್ಗಳಿಂದ ಜಾರಿಗೊಳಿಸಲಾದ ಭದ್ರತಾ ನೀತಿಯಾಗಿದೆ. ಸರ್ವರ್ನಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪಡೆಯಲು ಕೆಲವು ಡೊಮೇನ್ಗಳಿಗೆ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
- ನಾನು ಏಕೆ "ಹಿಡಿಯಲಾಗದ ನಿರಾಕರಣೆ (ಟೈಪ್ಎರರ್): ತರಲು ವಿಫಲವಾಗಿದೆ"?
- CORS ನಿರ್ಬಂಧಗಳ ಕಾರಣದಿಂದಾಗಿ ನಿಮ್ಮ API ವಿನಂತಿಯನ್ನು ನಿರ್ಬಂಧಿಸಿದಾಗ ಈ ದೋಷವು ಸಾಮಾನ್ಯವಾಗಿ ಸಂಭವಿಸುತ್ತದೆ. ಇದು ತಪ್ಪಾದ API URL ಗಳು ಅಥವಾ ಸರ್ವರ್ನೊಂದಿಗಿನ ಸಮಸ್ಯೆಗಳಿಂದ ಕೂಡ ಉಂಟಾಗಬಹುದು.
- ಏನು ಮಾಡುತ್ತದೆ useEffect ಈ ಸಂದರ್ಭದಲ್ಲಿ ಮಾಡುವುದೇ?
- ದಿ useEffect ಘಟಕವನ್ನು ಅಳವಡಿಸಿದ ನಂತರ API ವಿನಂತಿಯನ್ನು ಪ್ರಚೋದಿಸಲು ಹುಕ್ ಇನ್ ರಿಯಾಕ್ಟ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಹಲವಾರು ಅನಗತ್ಯ ವಿನಂತಿಗಳನ್ನು ತಡೆಗಟ್ಟುವ ಮೂಲಕ ಸರಿಯಾದ ಸಮಯದಲ್ಲಿ ಪಡೆಯುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
- ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ CORS ದೋಷಗಳನ್ನು ನಾನು ಹೇಗೆ ಸರಿಪಡಿಸಬಹುದು?
- CORS ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸಲು, ನೀವು ಬ್ಯಾಕೆಂಡ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ಬಳಸಬಹುದು, ಸರಿಯಾದ ಹೆಡರ್ಗಳನ್ನು ಹೊಂದಿಸಬಹುದು res.setHeader ಸರ್ವರ್ನಲ್ಲಿ, ಅಥವಾ ಅಭಿವೃದ್ಧಿ ಉದ್ದೇಶಗಳಿಗಾಗಿ CORS-ಎನಿವೇರ್ನಂತಹ ಸೇವೆಗಳನ್ನು ಅವಲಂಬಿಸಿ.
- ಉತ್ಪಾದನೆಯಲ್ಲಿ ನಾನು CORS ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳನ್ನು ಬಳಸಬಹುದೇ?
- ಇಲ್ಲ, CORS ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಗಾಗಿ ಮಾತ್ರ ಬಳಸಬೇಕು. ಉತ್ಪಾದನೆಯಲ್ಲಿ, ಸರ್ವರ್ನಲ್ಲಿ CORS ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಅಥವಾ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಅನ್ನು ಬಳಸುವುದು ಸುರಕ್ಷಿತವಾಗಿದೆ.
ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ CORS ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಅಂತಿಮ ಆಲೋಚನೆಗಳು
ಥರ್ಡ್-ಪಾರ್ಟಿ API ಗಳನ್ನು ಸೇವಿಸುವ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ CORS ದೋಷಗಳು ಸಾಮಾನ್ಯ ಸವಾಲಾಗಿದೆ. ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳು ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಸಹಾಯ ಮಾಡಬಹುದಾದರೂ, ಸುರಕ್ಷತೆ ಮತ್ತು ಡೇಟಾ ಸಮಗ್ರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಲು ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ನಂತಹ ಹೆಚ್ಚು ವಿಶ್ವಾಸಾರ್ಹ ಪರಿಹಾರಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ದೋಷ ನಿರ್ವಹಣೆ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ಪರಿಹಾರಗಳಂತಹ ಸರಿಯಾದ ತಂತ್ರಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ಡೆವಲಪರ್ಗಳು "ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ" ನಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ಸಮರ್ಥವಾಗಿ ನಿಭಾಯಿಸಬಹುದು. API ಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುವಾಗ, ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕತೆಯನ್ನು ಹೆಚ್ಚಿಸುವಾಗ ಅವರ ಅಪ್ಲಿಕೇಶನ್ ಸುಗಮ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಒದಗಿಸುತ್ತದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ರಿಯಾಕ್ಟ್ನಲ್ಲಿ CORS ಸಮಸ್ಯೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಮೂಲ ವಸ್ತು
- ಕ್ರಾಸ್-ಆರಿಜಿನ್ ರಿಸೋರ್ಸ್ ಶೇರಿಂಗ್ (CORS) ಮತ್ತು ಅದನ್ನು ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ವಿವರವಾದ ಮಾಹಿತಿಗಾಗಿ, ಇದನ್ನು ನೋಡಿ CORS ನಲ್ಲಿ MDN ವೆಬ್ ಡಾಕ್ಸ್ .
- "ಪಡೆಯಲು ವಿಫಲವಾಗಿದೆ" ಮತ್ತು ಸಂಭಾವ್ಯ ಪರಿಹಾರಗಳಂತಹ ಸಾಮಾನ್ಯ ಪ್ರತಿಕ್ರಿಯೆ ದೋಷಗಳ ಕುರಿತು ಇನ್ನಷ್ಟು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಪರಿಶೀಲಿಸಿ ದೋಷದ ಗಡಿಗಳ ಮೇಲೆ ಪ್ರತಿಕ್ರಿಯಿಸುವ ದಾಖಲೆ .
- CORS ಸಮಸ್ಯೆಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಅನ್ನು ಹೊಂದಿಸಲು ನೀವು ಎಕ್ಸ್ಪ್ರೆಸ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ, ಭೇಟಿ ನೀಡಿ Express.js ರೂಟಿಂಗ್ ಮತ್ತು ಮಿಡಲ್ವೇರ್ .
- JavaScript ನಲ್ಲಿ Fetch API ನೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡುವುದು ಎಂಬುದರ ಕುರಿತು ಸಹಾಯಕ್ಕಾಗಿ, ನೋಡಿ Fetch API ನಲ್ಲಿ MDN ವೆಬ್ ಡಾಕ್ಸ್ .
- ಅಧಿಕೃತ API ದಾಖಲಾತಿಯಲ್ಲಿ ರೆಸ್ಟೋರೆಂಟ್ ಡೇಟಾಗಾಗಿ Swiggy ನ API ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ಅನ್ವೇಷಿಸಿ: ಸ್ವಿಗ್ಗಿ API .