ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ನೊಂದಿಗೆ ವೈಟ್ + ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ಐಡಿ-ಆಧಾರಿತ API ಪಡೆದುಕೊಳ್ಳುವಿಕೆ ದೋಷಗಳನ್ನು ಪರಿಹರಿಸುವುದು
ಆಧುನಿಕ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ, ಬ್ಯಾಕೆಂಡ್ API ನಿಂದ ಡೇಟಾವನ್ನು ಪಡೆಯುವುದು ನಿರ್ಣಾಯಕ ಕಾರ್ಯವಾಗಿದೆ. Vite+React ಮುಂಭಾಗದಲ್ಲಿ, ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ತಡೆರಹಿತವಾಗಿರುತ್ತದೆ. ಆದಾಗ್ಯೂ, ID ಮೂಲಕ ಡೇಟಾವನ್ನು ಪಡೆದುಕೊಳ್ಳುವಾಗ ನೀವು ನಿರ್ದಿಷ್ಟ ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸಬಹುದು, ವಿಶೇಷವಾಗಿ Axios ಬಳಸುವಾಗ.
ಬ್ರೌಸರ್ನಲ್ಲಿನ URL ಗಳ ಮೂಲಕ ನೇರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿನಂತಿಗಳು ಮುಂಭಾಗದಿಂದ ಆಹ್ವಾನಿಸಿದಾಗ ವಿಫಲವಾದಾಗ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ. ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ನಿಂದ ID ಮೂಲಕ ಉತ್ಪನ್ನ ಡೇಟಾವನ್ನು ಪಡೆದುಕೊಳ್ಳುವಾಗ ಅಂತಹ ಒಂದು ದೋಷ ಸಂಭವಿಸುತ್ತದೆ. ಈ ಪರಿಸ್ಥಿತಿಯು ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು, ಸಾಮಾನ್ಯವಾಗಿ ಹೊಂದಿಕೆಯಾಗದ ಡೇಟಾ ಪ್ರಕಾರಗಳಿಗೆ ಸಂಬಂಧಿಸಿದೆ.
ಈ ಲೇಖನದಲ್ಲಿ, Axios ಬಳಸಿಕೊಂಡು ID ಮೂಲಕ ಉತ್ಪನ್ನಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳುವಾಗ ಎದುರಾಗುವ ಸಾಮಾನ್ಯ ದೋಷದ ಮೇಲೆ ನಾವು ಗಮನಹರಿಸುತ್ತೇವೆ. ದೋಷವು ಸಾಮಾನ್ಯವಾಗಿ ಮುಂಭಾಗದಲ್ಲಿ "400 ಕೆಟ್ಟ ವಿನಂತಿ" ಎಂದು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ನಲ್ಲಿ ವಿಫಲವಾದ ಡೇಟಾ ಪ್ರಕಾರದ ಪರಿವರ್ತನೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಈ ಸಮಸ್ಯೆಯ ಕಾರಣ ಮತ್ತು ಅದರ ಪರಿಹಾರ ಎರಡನ್ನೂ ನಾವು ಅನ್ವೇಷಿಸುತ್ತೇವೆ.
ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಮೂಲಕ, ಮುಂಭಾಗ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ನಡುವಿನ ರೀತಿಯ ಪರಿವರ್ತನೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಬಗ್ಗೆ ನೀವು ಆಳವಾದ ತಿಳುವಳಿಕೆಯನ್ನು ಪಡೆಯುತ್ತೀರಿ. ಇದು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ Vite+React ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ನಿಮ್ಮ API ಏಕೀಕರಣವನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
useParams() | ನಿಂದ ಈ ಕೊಕ್ಕೆ ರಿಯಾಕ್ಟ್-ರೂಟರ್-ಡಾಮ್ ಮಾರ್ಗದ ನಿಯತಾಂಕಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ, URL ನಿಂದ ಡೈನಾಮಿಕ್ ಆಗಿ ಉತ್ಪನ್ನ ID ಅನ್ನು ಹಿಂಪಡೆಯಲು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಘಟಕವು ಅದರ ID ಮೂಲಕ ಸರಿಯಾದ ಉತ್ಪನ್ನವನ್ನು ಪಡೆಯುವುದನ್ನು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
parseInt(id, 10) | URL ಪ್ಯಾರಾಮೀಟರ್ (ಐಡಿ) ಅನ್ನು ಸ್ಟ್ರಿಂಗ್ನಿಂದ ಪೂರ್ಣಾಂಕಕ್ಕೆ ಪರಿವರ್ತಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಬ್ಯಾಕೆಂಡ್ನಲ್ಲಿ "NaN" ದೋಷವನ್ನು ತಪ್ಪಿಸಲು ಇದು ನಿರ್ಣಾಯಕವಾಗಿದೆ, ಇದು ಉತ್ಪನ್ನ ID ಗಾಗಿ ಪೂರ್ಣಾಂಕ ಇನ್ಪುಟ್ ಅನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ. |
axios.get() | ದಿ ಅಕ್ಷಗಳು HTTP GET ವಿನಂತಿಗಳನ್ನು API ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಕಳುಹಿಸಲು ಬಳಸುವ ವಿಧಾನ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ನಿಂದ ID ಮೂಲಕ ಉತ್ಪನ್ನ ಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ. |
mockResolvedValue() | ಜೆಸ್ಟ್ ಪರೀಕ್ಷೆಯಲ್ಲಿ, mockResolvedValue() ಒಂದು Axios ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಅನುಕರಿಸುತ್ತದೆ. ನಿಜವಾದ HTTP ವಿನಂತಿಗಳನ್ನು ಮಾಡದೆಯೇ API ಕರೆಯನ್ನು ಅಪಹಾಸ್ಯ ಮಾಡಲು ಮತ್ತು ಘಟಕದ ನಡವಳಿಕೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಇದು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. |
waitFor() | ಈ ಪರೀಕ್ಷೆ-ಗ್ರಂಥಾಲಯ ಪರೀಕ್ಷಾ ಸಮರ್ಥನೆಗಳೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು DOM ನಲ್ಲಿ ಅಸಮಕಾಲಿಕ ಅಂಶಗಳನ್ನು (API ಡೇಟಾದಂತಹ) ಸಲ್ಲಿಸಲು ಕಾಯಲು ಕಾರ್ಯವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉತ್ಪನ್ನ ಡೇಟಾವನ್ನು ಪಡೆದ ನಂತರ ಮಾತ್ರ ಪರೀಕ್ಷೆಯು ಮುಂದುವರಿಯುತ್ತದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
MockMvc.perform() | ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಯೂನಿಟ್ ಪರೀಕ್ಷೆಯಲ್ಲಿ, MockMvc.perform() ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಅಂತಿಮ ಬಿಂದುವಿಗೆ ಅಣಕು HTTP ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಕೆಂಡ್ಗೆ ವಿನಂತಿಗಳನ್ನು ಅನುಕರಿಸಲು ಇದು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. |
@WebMvcTest | ವೆಬ್ ಪದರದ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿದ ಪರೀಕ್ಷಾ ಪರಿಸರವನ್ನು ಹೊಂದಿಸುವ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಟಿಪ್ಪಣಿ. ಸಂಪೂರ್ಣ ಅಪ್ಲಿಕೇಶನ್ ಸಂದರ್ಭವನ್ನು ಲೋಡ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲದೇ ನಿಯಂತ್ರಕಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ. |
@Autowired | ಈ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಟಿಪ್ಪಣಿಯು ಸೇವೆಗಳು ಮತ್ತು ರೆಪೊಸಿಟರಿಗಳಂತಹ ಅವಲಂಬನೆಗಳನ್ನು ನಿಯಂತ್ರಕಗಳು ಮತ್ತು ಪರೀಕ್ಷೆಗಳಿಗೆ ಚುಚ್ಚುತ್ತದೆ. ಹಸ್ತಚಾಲಿತ ತತ್ಕ್ಷಣವಿಲ್ಲದೆ ಬಳಕೆಗೆ ಅಗತ್ಯವಿರುವ ಘಟಕಗಳು ಲಭ್ಯವಿವೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
@PathVariable | ಈ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಟಿಪ್ಪಣಿಯು URL ವಿಭಾಗವನ್ನು (ಉತ್ಪನ್ನ ID) ವಿಧಾನದ ನಿಯತಾಂಕಕ್ಕೆ ಬಂಧಿಸುತ್ತದೆ. ಇದು REST API ಅಂತಿಮ ಬಿಂದುಗಳಲ್ಲಿ ಡೈನಾಮಿಕ್ ಮಾರ್ಗಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಒದಗಿಸಿದ ID ಯ ಆಧಾರದ ಮೇಲೆ ಸರಿಯಾದ ಉತ್ಪನ್ನವನ್ನು ಹಿಂಪಡೆಯಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
ಆಕ್ಸಿಯೋಸ್ ಫೆಚ್ ಮತ್ತು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಇಂಟಿಗ್ರೇಶನ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ನಾನು ಒದಗಿಸಿದ ಮುಂಭಾಗದ ಕೋಡ್ ಬಳಸುತ್ತದೆ ಪ್ರತಿಕ್ರಿಯಿಸಿ ಮತ್ತು ಆಕ್ಸಿಯೋಸ್ ಉತ್ಪನ್ನದ ಡೇಟಾವನ್ನು ಪಡೆಯಲು a ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್. ID ಮೂಲಕ ಡೇಟಾವನ್ನು ಪಡೆಯುವುದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದೆ, ಇದು ಡೈನಾಮಿಕ್ ಮಾರ್ಗ ನಿರ್ವಹಣೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಬಳಸಿ ಪ್ಯಾರಮ್ಸ್ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ. ದಿ ಬಳಸಿ ಪ್ಯಾರಮ್ಸ್ ಹುಕ್ URL ನಿಂದ ಉತ್ಪನ್ನ ID ಅನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ, ನಂತರ ಅದನ್ನು ತರಲು ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪ್ರಚೋದಿಸಲು ಘಟಕಕ್ಕೆ ರವಾನಿಸಲಾಗುತ್ತದೆ. ಈ ಐಡಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಪೂರ್ಣಾಂಕಕ್ಕೆ ಪರಿವರ್ತಿಸಬೇಕು ಪಾರ್ಸ್ಇಂಟ್ ಮುಂಭಾಗ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ನಡುವಿನ ಹೊಂದಾಣಿಕೆಯನ್ನು ತಪ್ಪಿಸಲು, ಸರಿಯಾದ ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ಗೆ ಕಳುಹಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು.
Axios ಅಂತಿಮ ಬಿಂದುವನ್ನು ಬಳಸಿಕೊಂಡು ಬ್ಯಾಕೆಂಡ್ API ಗೆ GET ವಿನಂತಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ: http://localhost:8080/api/products/{id}. ಉತ್ಪನ್ನ ID ಗಾಗಿ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯವನ್ನು ನಿರೀಕ್ಷಿಸಲು ಬ್ಯಾಕೆಂಡ್ ರಚನೆಯಾಗಿದೆ. ಐಡಿಯನ್ನು ಸರಿಯಾಗಿ ಪರಿವರ್ತಿಸದಿದ್ದರೆ, ಬ್ಯಾಕೆಂಡ್ ಪ್ರಕಾರದ ಪರಿವರ್ತನೆ ದೋಷವನ್ನು ಎಸೆಯುತ್ತದೆ, ಇದು "400 ಕೆಟ್ಟ ವಿನಂತಿ" ಸಮಸ್ಯೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯವನ್ನು ಪೂರ್ಣಾಂಕಕ್ಕೆ ಪರಿವರ್ತಿಸಲು ವಿಫಲವಾಗಿದೆ ಎಂದು ಬ್ಯಾಕೆಂಡ್ನ ದೋಷ ಲಾಗ್ ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳುತ್ತದೆ, ಅದಕ್ಕಾಗಿಯೇ ವಿನಂತಿಯನ್ನು ಮಾಡುವ ಮೊದಲು ಮುಂಭಾಗದಲ್ಲಿ ID ಅನ್ನು ಪರಿವರ್ತಿಸುವುದು ಅತ್ಯಗತ್ಯ.
ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ನಲ್ಲಿ, ದಿ ಉತ್ಪನ್ನ ನಿಯಂತ್ರಕ ವರ್ಗವು ಒಂದು ಅಂತಿಮ ಬಿಂದುವನ್ನು ಮ್ಯಾಪ್ ಮಾಡಲಾಗಿದೆ /ಉತ್ಪನ್ನಗಳು/{id}. ಇದನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ @PathVariable ಟಿಪ್ಪಣಿ, ಇದು ವಿಧಾನದ ವಾದಕ್ಕೆ ಮಾರ್ಗ ನಿಯತಾಂಕವನ್ನು ಬಂಧಿಸುತ್ತದೆ. URL ನಲ್ಲಿ ರವಾನಿಸಲಾದ ಉತ್ಪನ್ನ ID ಅನ್ನು ನಿಯಂತ್ರಕ ಸರಿಯಾಗಿ ಸ್ವೀಕರಿಸಿದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ನಿಯಂತ್ರಕವು ಪ್ರತಿಯಾಗಿ, ಡೇಟಾಬೇಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಉತ್ಪನ್ನದ ವಿವರಗಳನ್ನು ಹಿಂಪಡೆಯಲು ಸೇವಾ ಪದರವನ್ನು ಕರೆಯುತ್ತದೆ ಉತ್ಪನ್ನ ಸೇವೆ ವರ್ಗ. ಸರಿಯಾದ ನಿರ್ವಹಣೆ ಪಾಥ್ವೇರಿಯಬಲ್ ಮತ್ತು ಪ್ರಕಾರದ ಹೊಂದಾಣಿಕೆಯ ದೋಷಗಳನ್ನು ತಡೆಗಟ್ಟುವಲ್ಲಿ ಸೇವಾ ತರ್ಕವು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ಪರೀಕ್ಷೆಗಾಗಿ, ವಿಭಿನ್ನ ಪರಿಸರದಲ್ಲಿ ಪರಿಹಾರವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಮುಂಭಾಗ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ಎರಡೂ ಘಟಕ ಪರೀಕ್ಷೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತವೆ. ಮುಂಭಾಗದಲ್ಲಿ, ಜೆಸ್ಟ್ Axios ವಿನಂತಿಗಳನ್ನು ಅಣಕಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ, ಘಟಕವು ಪಡೆದ ಉತ್ಪನ್ನ ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ಸಲ್ಲಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಅಂತೆಯೇ, ಬ್ಯಾಕೆಂಡ್ ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ MockMvc API ಎಂಡ್ಪಾಯಿಂಟ್ನ ನಡವಳಿಕೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು, ಮಾನ್ಯ ID ಗಳನ್ನು ರವಾನಿಸಿದಾಗ ಸರಿಯಾದ ಉತ್ಪನ್ನ ಡೇಟಾವನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು. ಪರೀಕ್ಷೆಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಮೂಲಕ, ಡೆವಲಪರ್ಗಳು ಕೋಡ್ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು, ಉತ್ಪಾದನೆಯ ಸಮಯದಲ್ಲಿ ದೋಷಗಳ ಸಾಧ್ಯತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
Vite ನಲ್ಲಿ Axios ದೋಷವನ್ನು ನಿರ್ವಹಿಸುವುದು + ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ನೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸಿ
ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ನಿಂದ ID ಮೂಲಕ ಉತ್ಪನ್ನ ಡೇಟಾವನ್ನು ಪಡೆಯಲು ಈ ಸ್ಕ್ರಿಪ್ಟ್ Axios ಜೊತೆಗೆ ರಿಯಾಕ್ಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಇಲ್ಲಿ ಸಮಸ್ಯೆಯು ಪಡೆಯುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ದೋಷಗಳನ್ನು ತಪ್ಪಿಸಲು ಮಾರ್ಗದ ನಿಯತಾಂಕವನ್ನು ಸರಿಯಾದ ಪ್ರಕಾರಕ್ಕೆ ಪರಿವರ್ತಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
import React, { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import axios from "../axios";
const Product = () => {
const { id } = useParams();
const [product, setProduct] = useState(null);
useEffect(() => {
const fetchProduct = async () => {
try {
// Parse id to an integer to avoid "NaN" errors
const productId = parseInt(id, 10);
const response = await axios.get(`http://localhost:8080/api/products/${productId}`);
setProduct(response.data);
} catch (error) {
console.error("Error fetching product:", error);
}
};
fetchProduct();
}, [id]);
if (!product) {
return <h2 className="text-center">Loading...</h2>;
}
return (
<div>
<h1>{product.name}</h1>
<p>{product.description}</p>
</div>
);
};
export default Product;
ID ಮೂಲಕ ಉತ್ಪನ್ನವನ್ನು ಪಡೆಯಲು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್
ಈ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ ಕೋಡ್ ಡೇಟಾಬೇಸ್ನಿಂದ ಅದರ ID ಮೂಲಕ ಉತ್ಪನ್ನವನ್ನು ಪಡೆಯುತ್ತದೆ. ಇದು ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರದ ಪರಿವರ್ತನೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಡೇಟಾವನ್ನು ರವಾನಿಸಲಾಗಿದೆ ಮತ್ತು ಸರಿಯಾಗಿ ಹಿಂಪಡೆಯಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping("/products/{id}")
public Product getProduct(@PathVariable int id) {
return productService.getProductById(id);
}
}
ಉತ್ಪನ್ನವನ್ನು ಪಡೆಯುವ ಕಾರ್ಯಕ್ಕಾಗಿ ಘಟಕ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ
ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ಆಕ್ಸಿಯೋಸ್ ಪಡೆಯುವ ವಿನಂತಿಯ ಸರಿಯಾದ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸಲು ಜೆಸ್ಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಯುನಿಟ್ ಪರೀಕ್ಷೆಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ.
import { render, screen, waitFor } from '@testing-library/react';
import axios from 'axios';
import Product from './Product';
jest.mock('axios');
test('fetches and displays product', async () => {
axios.get.mockResolvedValue({ data: { name: 'Product1', description: 'A sample product' } });
render(<Product />);
await waitFor(() => expect(screen.getByText('Product1')).toBeInTheDocument());
});
MockMvc ನೊಂದಿಗೆ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ
ಸರಿಯಾದ ವಿನಂತಿ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ ನಿರ್ವಹಣೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು MockMvc ಫ್ರೇಮ್ವರ್ಕ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಹೇಗೆ ಪರೀಕ್ಷಿಸಬೇಕು ಎಂಬುದನ್ನು ಈ ಉದಾಹರಣೆಯು ತೋರಿಸುತ್ತದೆ.
@RunWith(SpringRunner.class)
@WebMvcTest(ProductController.class)
public class ProductControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testGetProductById() throws Exception {
mockMvc.perform(get("/api/products/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name").value("Product1"));
}
}
Axios ಮತ್ತು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ನಲ್ಲಿ ID-ಆಧಾರಿತ ಪಡೆಯುವ ದೋಷಗಳನ್ನು ನಿವಾರಿಸುವುದು
ಬ್ಯಾಕೆಂಡ್ API ನಿಂದ ಡೇಟಾವನ್ನು ಪಡೆಯುವ ಮತ್ತೊಂದು ನಿರ್ಣಾಯಕ ಅಂಶವು ನಿರ್ವಹಣೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ದೋಷ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಆಕರ್ಷಕವಾಗಿ. Vite+React ಮುಂಭಾಗದಲ್ಲಿ ID-ಆಧಾರಿತ ಪ್ರಶ್ನೆಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, ಸರ್ವರ್ ದೋಷವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಸಾಧ್ಯತೆ 400 ಕೆಟ್ಟ ವಿನಂತಿ ಅಥವಾ ಒಂದು ರೀತಿಯ ಅಸಂಗತತೆ ಸಾಮಾನ್ಯವಾಗಿದೆ. ಸುಗಮ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮುಂಭಾಗದಲ್ಲಿ ಈ ದೋಷಗಳನ್ನು ಹೇಗೆ ನಿರೀಕ್ಷಿಸುವುದು ಮತ್ತು ನಿರ್ವಹಿಸುವುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅತ್ಯಗತ್ಯ. ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪಾರ್ಸಿಂಗ್ ID ಪ್ಯಾರಾಮೀಟರ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸರಿಯಾಗಿ ಬಳಸುವುದು ಒಂದು ಪ್ರಮುಖ ಹಂತವಾಗಿದೆ, ಆದರೆ ಜಾಗತಿಕವಾಗಿ ವಿನಾಯಿತಿಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಹೆಚ್ಚುವರಿ ಪರಿಗಣನೆಗಳು ಸಹ ಇವೆ.
ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ, ಹೊಂದಿಸುವುದು ದೋಷ ಗಡಿಗಳು ಸಂಪೂರ್ಣ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕ್ರ್ಯಾಶ್ ಮಾಡದೆಯೇ ಈ ರೀತಿಯ ದೋಷಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ರಿಯಾಕ್ಟ್ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ರಿಯಾಕ್ಟ್ಗಳನ್ನು ಬಳಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಘಟಕ ಡಿಡ್ ಕ್ಯಾಚ್ ಲೈಫ್ಸೈಕಲ್ ವಿಧಾನ ಅಥವಾ ಫಂಕ್ಷನ್-ಆಧಾರಿತ ಘಟಕಗಳಲ್ಲಿ ದೋಷ-ಬೌಂಡರಿ ಕೊಕ್ಕೆಗಳು. ಬಳಕೆದಾರರಿಗೆ ಮಾಹಿತಿಯುಕ್ತ ಸಂದೇಶಗಳನ್ನು ಸರಿಯಾಗಿ ಪ್ರದರ್ಶಿಸುವ ಮೂಲಕ ಬ್ಯಾಕೆಂಡ್ ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು API ಕರೆಗಳು ವಿಫಲವಾದಾಗ ಹತಾಶೆ ಮತ್ತು ಗೊಂದಲವನ್ನು ತಡೆಯಬಹುದು. ಅಮಾನ್ಯ ಐಡಿಗಳು ಅಥವಾ ಲಭ್ಯವಿಲ್ಲದ ಉತ್ಪನ್ನಗಳಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ಹಿಡಿಯಲು ಈ ವಿಧಾನವು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಇದಲ್ಲದೆ, ಮುಂಭಾಗ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ಎರಡರಲ್ಲೂ ಲಾಗಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದರಿಂದ ಡೆವಲಪರ್ಗಳು ಮರುಕಳಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆ, API ಪಡೆಯುವ ವಿನಂತಿಗಳ ಸಮಯದಲ್ಲಿ ಕೆಲವು ದೋಷಗಳು ಎಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು ಆಧಾರವಾಗಿರುವ ದೋಷಗಳು ಅಥವಾ ಅಸಮರ್ಥತೆಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಬಹುದು. ಒಂದು ಉಪಕರಣದ ಮೂಲಕ ಈ ಘಟನೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದು ಸೆಂಟ್ರಿ ಅಥವಾ ಕಸ್ಟಮ್ ಲಾಗಿಂಗ್ ಸೇವೆಗಳ ಮೂಲಕ ನೀವು ಅವುಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪರಿಹರಿಸಬಹುದು ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಅಭ್ಯಾಸವು ಕಾಲಾನಂತರದಲ್ಲಿ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ನಿರ್ವಹಣೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ.
Axios ಮತ್ತು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ನಲ್ಲಿ ID ಮೂಲಕ ಡೇಟಾವನ್ನು ಪಡೆಯುವುದರ ಕುರಿತು ಪದೇ ಪದೇ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು
- ID ಮೂಲಕ ಪಡೆಯುವಾಗ ನನ್ನ Axios ವಿನಂತಿಯು 400 ದೋಷವನ್ನು ಏಕೆ ಹಿಂದಿರುಗಿಸುತ್ತದೆ?
- ಯಾವಾಗ ಇದು ಸಂಭವಿಸುತ್ತದೆ URL parameter ಸ್ಟ್ರಿಂಗ್ನಿಂದ ಪೂರ್ಣಾಂಕದಂತಹ ನಿರೀಕ್ಷಿತ ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ ಸರಿಯಾಗಿ ಪರಿವರ್ತಿಸಲಾಗಿಲ್ಲ. ಬಳಸಿ parseInt() ಇದನ್ನು ಸರಿಪಡಿಸಲು.
- Axios ವಿನಂತಿಗಳಲ್ಲಿನ ದೋಷಗಳನ್ನು ನಾನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು?
- ಬಳಸಿಕೊಂಡು ನೀವು ದೋಷಗಳನ್ನು ನಿಭಾಯಿಸಬಹುದು try-catch ಅಸಮಕಾಲಿಕ ಕಾರ್ಯಗಳಲ್ಲಿ ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಅಲ್ಲದೆ, ಬಳಸಿ axios.interceptors ಜಾಗತಿಕ ದೋಷ ನಿರ್ವಹಣೆಗಾಗಿ.
- ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ನಲ್ಲಿ @PathVariable ನ ಪಾತ್ರವೇನು?
- ದಿ @PathVariable ಟಿಪ್ಪಣಿಯು URL ನಿಂದ ಬ್ಯಾಕೆಂಡ್ನಲ್ಲಿನ ವಿಧಾನದ ನಿಯತಾಂಕಕ್ಕೆ ಮೌಲ್ಯವನ್ನು ಬಂಧಿಸುತ್ತದೆ, URL ಅನ್ನು ಆಧರಿಸಿ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ನಾನು Axios API ಕರೆಗಳನ್ನು ಹೇಗೆ ಪರೀಕ್ಷಿಸಬಹುದು?
- ನಂತಹ ಪರೀಕ್ಷಾ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸಿ Jest ಮತ್ತು axios-mock-adapter API ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಅನುಕರಿಸಲು ಮತ್ತು Axios ವಿನಂತಿಗಳ ನಡವಳಿಕೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು.
- ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ನಲ್ಲಿ ದೋಷಗಳನ್ನು ದಾಖಲಿಸಲು ಉತ್ತಮ ಮಾರ್ಗ ಯಾವುದು?
- ನೀವು ಬಳಸಬಹುದು SLF4J ಅಥವಾ Logback ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ನಲ್ಲಿ ಬ್ಯಾಕೆಂಡ್ ಲಾಗಿಂಗ್ಗಾಗಿ. API ವಿನಂತಿಗಳೊಂದಿಗೆ ಮರುಕಳಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಮತ್ತು ಪರಿಹರಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
Vite+React ನಲ್ಲಿ ID ತರಲು ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲಾಗುತ್ತಿದೆ
ID ಮೂಲಕ ಬ್ಯಾಕೆಂಡ್ API ನಿಂದ ಡೇಟಾವನ್ನು ಪಡೆಯುವುದು ಅನನ್ಯ ಸವಾಲುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಬ್ಯಾಕೆಂಡ್ ಕಟ್ಟುನಿಟ್ಟಾದ ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ನಿರೀಕ್ಷಿಸಿದಾಗ. ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಸರಿಯಾಗಿ ಪರಿವರ್ತಿಸುವುದು ID Axios ನೊಂದಿಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವ ಮೊದಲು ಮುಂಭಾಗದಲ್ಲಿ "400 ಕೆಟ್ಟ ವಿನಂತಿ" ದೋಷದಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ತಡೆಯಲು ಸಹಾಯ ಮಾಡಿದೆ. ಸುಗಮ ಸಂವಹನಕ್ಕಾಗಿ ಮುಂಭಾಗ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ನಡುವೆ ಡೇಟಾ ಪ್ರಕಾರದ ಹೊಂದಾಣಿಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಇದು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ಹೆಚ್ಚುವರಿಯಾಗಿ, ಮುಂಭಾಗ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ಎರಡರಲ್ಲೂ ಸರಿಯಾದ ದೋಷ ನಿರ್ವಹಣೆ ತಂತ್ರಗಳನ್ನು ಅಳವಡಿಸುವುದು ಅಪ್ಲಿಕೇಶನ್ನ ಸ್ಥಿರತೆಯನ್ನು ಇನ್ನಷ್ಟು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಲಾಗಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಮತ್ತು ದೋಷ ಗಡಿಗಳಂತಹ ಸಾಧನಗಳನ್ನು ಬಳಸುವುದರಿಂದ ಮರುಕಳಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಬಹುದು ಮತ್ತು ಸರಿಪಡಿಸಬಹುದು, ಬಳಕೆದಾರರ ಅನುಭವ ಮತ್ತು ಸಿಸ್ಟಮ್ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಸುಧಾರಿಸಬಹುದು.
ಮೂಲಗಳು ಮತ್ತು ಉಲ್ಲೇಖಗಳು
- ರಿಯಾಕ್ಟ್ ಮತ್ತು ವೈಟ್ನಲ್ಲಿ ಆಕ್ಸಿಯೋಸ್ ದೋಷ ನಿರ್ವಹಣೆಯ ಕುರಿತು ಮಾಹಿತಿಗಾಗಿ, ಅಧಿಕೃತ ಆಕ್ಸಿಯೋಸ್ ದಸ್ತಾವೇಜನ್ನು ಬಳಕೆಯ ಕುರಿತು ವಿವರವಾದ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸಿದೆ axios.get ಮತ್ತು ದೋಷ ನಿರ್ವಹಣೆ. ದಸ್ತಾವೇಜನ್ನು ಇಲ್ಲಿ ಭೇಟಿ ಮಾಡಿ: ಆಕ್ಸಿಯೋಸ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
- ಜಾವಾ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ನಿಯಂತ್ರಕ ಸೆಟಪ್ ಅನ್ನು ಅಧಿಕೃತ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಮಾರ್ಗದರ್ಶಿಗಳಿಂದ ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ, ಹೇಗೆ ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ನೀಡುತ್ತದೆ @PathVariable ಮತ್ತು REST API ಗಳು. ಇಲ್ಲಿ ಹೆಚ್ಚು ಓದಿ: ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಗೈಡ್ .
- ರಿಯಾಕ್ಟ್ ರೂಟರ್ ಬಳಸಿ ಪ್ಯಾರಮ್ಸ್ ಹುಕ್ ಅನ್ನು ಡೈನಾಮಿಕ್ URL ನಿಯತಾಂಕಗಳ ಸಂದರ್ಭದಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ. ಹೆಚ್ಚಿನ ವಿವರಗಳಿಗಾಗಿ, ಅಧಿಕೃತ ರಿಯಾಕ್ಟ್ ರೂಟರ್ ದಸ್ತಾವೇಜನ್ನು ಪರಿಶೀಲಿಸಿ: ರಿಯಾಕ್ಟ್ ರೂಟರ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
- ಜೆಸ್ಟ್ ಪರೀಕ್ಷೆ ಮತ್ತು ಪರೀಕ್ಷಾ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಆಕ್ಸಿಯೋಸ್ ಅನ್ನು ಅಪಹಾಸ್ಯ ಮಾಡುವ ಮಾಹಿತಿಯನ್ನು ಜೆಸ್ಟ್ ಮತ್ತು ಆಕ್ಸಿಯೋಸ್ ಪರೀಕ್ಷಾ ದಾಖಲಾತಿಯಿಂದ ಪಡೆಯಲಾಗಿದೆ. ಇಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಭೇಟಿ ಮಾಡಿ: ಜೆಸ್ಟ್ ಮೋಕ್ ಕಾರ್ಯಗಳು ಮತ್ತು ಆಕ್ಸಿಯೋಸ್ ಮೋಕಿಂಗ್ ಗೈಡ್ .