𝗖𝗹𝗲𝗮𝗻 𝗔𝗣𝗜 𝗗𝗲𝘀𝗶𝗴𝗻 𝗶𝗻 𝗡𝗼𝗱𝗲.𝗷𝘀
ಹೆಚ್ಚಿನ Node.js APIಗಳು ಒಂದು server.js ಫೈಲ್ ಮತ್ತು ಕೆಲವು ರೂಟ್ಗಳೊಂದಿಗೆ (routes) ಪ್ರಾರಂಭವಾಗುತ್ತವೆ. ಅಪ್ಲಿಕೇಶನ್ ಚಿಕ್ಕದಿದ್ದಾಗ ಇದು ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ನಂತರ ಅಪ್ಲಿಕೇಶನ್ ಬೆಳೆಯುತ್ತದೆ.
ರೂಟ್ಗಳು ಹೆಚ್ಚಾಗುತ್ತವೆ. ಬಿಸಿನೆಸ್ ಲಾಜಿಕ್ (Business logic) ರೂಟ್ ಹ್ಯಾಂಡ್ಲರ್ಗಳೊಳಗೆ ಸೇರಿಕೊಳ್ಳುತ್ತದೆ. ಎರರ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ (Error handling) ಕಾಪಿ-ಪೇಸ್ಟ್ ಮಾಡಿದ ಕೋಡ್ನ ಗೊಂದಲವಾಗುತ್ತದೆ. ಹೊಸ ಡೆವಲಪರ್ಗಳು ವಿಷಯಗಳು ಎಲ್ಲಿವೆ ಎಂದು ಹುಡುಕಲು ಕಷ್ಟಪಡುತ್ತಾರೆ. API ಇನ್ನೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆದರೆ ಅದನ್ನು ನಿರ್ವಹಿಸುವುದು (maintain) ಕಷ್ಟವಾಗುತ್ತದೆ.
ಕ್ಲೀನ್ API ಡಿಸೈನ್ ಇದನ್ನು ತಡೆಯುತ್ತದೆ. ನಿಮಗೆ ಕಾರ್ಯಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುವ ಒಂದು ರಚನೆಯ ಅಗತ್ಯವಿದೆ.
ವೃತ್ತಿಪರ API ಅನ್ನು ಹಂತ ಹಂತವಾಗಿ ನಿರ್ಮಿಸುವುದು ಹೇಗೆ ಎಂಬುದು ಇಲ್ಲಿದೆ:
- ಪ್ರಾಜೆಕ್ಟ್ ರಚನೆ (Project Structure): ಫೀಚರ್ ಫೋಲ್ಡರ್ಗಳನ್ನು ಬಳಸಿ. ಪ್ರತಿಯೊಂದು ಡೊಮೇನ್ ತನ್ನದೇ ಆದ ರೂಟರ್, ಕಂಟ್ರೋಲರ್, ಸರ್ವಿಸ್ ಮತ್ತು ಸ್ಕೀಮಾವನ್ನು ಹೊಂದಿರಬೇಕು.
- ವರ್ಷನಿಂಗ್ (Versioning): ಮೊದಲ ದಿನದಿಂದම /api/v1/ ನಿಂದ ಪ್ರಾರಂಭಿಸಿ. ನಂತರ v2 ಅನ್ನು ಸೇರಿಸುವುದು ಕೇವಲ ಒಂದು ಫೋಲ್ಡರ್ ಬದಲಾವಣೆಯಾಗಿರಬೇಕೇ ಹೊರತು, ಪೂರ್ಣ ರಿಫ್ಯಾಕ್ಟರ್ (refactor) ಆಗಿರಬಾರದು.
- ಕಂಟ್ರೋಲರ್ ಲೇಯರ್ (The Controller Layer): ಕಂಟ್ರೋಲರ್ಗಳು HTTP ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಅವು ರಿಕ್ವೆಸ್ಟ್ಗಳನ್ನು (requests) ಸರ್ವಿಸ್ ಕರೆಗಳಾಗಿ ಪರಿವರ್ತಿಸುತ್ತವೆ ಮತ್ತು ರೆಸ್ಪಾನ್ಸ್ಗಳನ್ನು (responses) ಕಳುಹಿಸುತ್ತವೆ. ಅವುಗಳಲ್ಲಿ ಬಿಸಿನೆಸ್ ಲಾಜಿಕ್ ಇರುವುದಿಲ್ಲ.
- ಸರ್ವಿಸ್ ಲೇಯರ್ (The Service Layer): ಇದು ನಿಮ್ಮ ಬಿಸಿನೆಸ್ ಲಾಜಿಕ್ ಇರುವ ಸ್ಥಳವಾಗಿದೆ. ಸರ್ವಿಸ್ಗಳಿಗೆ
reqಅಥವಾresಆಬ್ಜೆಕ್ಟ್ಗಳ ಬಗ್ಗೆ ತಿಳಿದಿರಬಾರದು. ಅವು ಕೇವಲ ಡೇಟಾ ಮತ್ತು ನಿಯಮಗಳ ಬಗ್ಗೆ ಮಾತ್ರ ಗಮನಹರಿಸಬೇಕು. - ವ್ಯಾಲಿಡೇಶನ್ (Validation): ಬೌಂಡರಿ (boundary) ನಲ್ಲಿ Zod ಬಳಸಿ. ಇನ್ಪುಟ್ಗಳು ನಿಮ್ಮ ಕಂಟ್ರೋಲರ್ಗಳಿಗೆ ತಲುಪುವ ಮೊದಲೇ ಅವುಗಳನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಿ. ಇದು ತಪ್ಪಾದ ಡೇಟಾ ನಿಮ್ಮ ಲಾಜಿಕ್ ಅನ್ನು ಹಾಳು ಮಾಡದಂತೆ ತಡೆಯುತ್ತದೆ.
- ಕೇಂದ್ರೀಕೃತ ಎರರ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ (Centralized Error Handling): ಇಡೀ ಅಪ್ಲಿಕೇಶನ್ಗಾಗಿ ಒಂದೇ ಎರರ್ ಹ್ಯಾಂಡ್ಲರ್ ಬಳಸಿ. ಇದು ಪ್ರತಿಯೊಂದು ಎರರ್ ರೆಸ್ಪಾನ್ಸ್ ಒಂದೇ ರೀತಿಯ ರಚನೆಯನ್ನು ಹೊಂದಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
- ಸ್ಥಿರವಾದ ರೆಸ್ಪಾನ್ಸ್ಗಳು (Consistent Responses): ನಿಮ್ಮ ಸಕ್ಸಸ್ ಮತ್ತು ಎರರ್ ರೆಸ್ಪಾನ್ಸ್ಗಳನ್ನು ರೂಪಿಸಲು ಹೆಲ್ಪರ್ ಬಳಸಿ. ಊಹಿಸಬಹುದಾದ (Predictable) JSON ಫ್ರಂಟ್ಎಂಡ್ ಡೆವಲಪರ್ಗಳ ಕೆಲಸವನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
- ರೇಟ್ ಲಿಮಿಟಿಂಗ್ (Rate Limiting): ಮಿಡ್ಲ್ವೇರ್ (middleware) ಬಳಸಿ ನಿಮ್ಮ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ದುರುಪಯೋಗದಿಂದ ರಕ್ಷಿಸಿ.
- ಡಾಕ್ಯುಮೆಂಟೇಶನ್ (Documentation): ಇಂಟರಾಕ್ಟಿವ್ API ಡಾಕ್ಸ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲು Swagger ಬಳಸಿ.
ಇದು ಏಕೆ ಮುಖ್ಯ:
ನೀವು ಈ ಲೇಯರ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಿದಾಗ, ನೀವು ನಮ್ಯತೆಯನ್ನು (flexibility) ಪಡೆಯುತ್ತೀರಿ. ನೀವು ಮಾಕ್ ಡೇಟಾಬೇಸ್ನಿಂದ (mock database) ನೈಜ ಡೇಟಾಬೇಸ್ಗೆ ಬದಲಾಯಿಸಬೇಕಾದರೆ, ನೀವು ಕೇವಲ ಸರ್ವಿಸ್ ಅನ್ನು ಬದಲಾಯಿಸಿದರೆ ಸಾಕು. ಕಂಟ್ರೋಲರ್ಗಳು ಮತ್ತು ರೂಟರ್ಗಳು ಬದಲಾಗುವುದಿಲ್ಲ.
ನೀವು ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಬಿಲ್ಟ್-ಇನ್ TypeScript ಸಪೋರ್ಟ್ ಬಯಸಿದರೆ, Fastify ಅನ್ನು ಪರಿಗಣಿಸಿ. ರಚನಾತ್ಮಕ ತತ್ವಗಳು ಒಂದೇ ಆಗಿರುತ್ತವೆ, ಆದರೆ ಫ್ರೇಮ್ವರ್ಕ್ ನಿಮಗಾಗಿ ಹೆಚ್ಚಿನ ಕೆಲಸಗಳನ್ನು ಮಾಡುತ್ತದೆ.
ಸದ್ಯಕ್ಕೆ ಎಲ್ಲವನ್ನೂ ಒಂದೇ ಫೈಲ್ನಲ್ಲಿ ಇಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಆರಂಭದಲ್ಲೇ ಸರಿಯಾದ ರಚನೆಯನ್ನು ನಿರ್ಮಿಸುವುದು ಓವರ್ಎಂಜಿನಿಯರಿಂಗ್ (overengineering) ಅಲ್ಲ. ಇದು ನಿರ್ವಹಿಸಬಹುದಾದ ಬ್ಯಾಕ್ಎಂಡ್ (maintainable backend) ಗಾಗಿ ಕನಿಷ್ಠ ಅವಶ್ಯಕತೆಯಾಗಿದೆ.
ನಿಮ್ಮ ಪ್ರಸ್ತುತ Express ಸೆಟಪ್ ಹೇಗಿದೆ? ನೀವು ಲೇಯರ್ಡ್ ಆರ್ಕಿಟೆಕ್ಚರ್ (layered architecture) ಬಳಸುತ್ತೀರಾ ಅಥವಾ ಆರ್ಗ್ಯಾನಿಕ್ (organic) ಆಗಿದೆಯೇ?
ಮೂಲ: https://dev.to/gavincettolo/clean-api-design-in-nodejs-a-practical-guide-3a32