{"id":1244,"date":"2025-04-28T13:05:15","date_gmt":"2025-04-28T09:35:15","guid":{"rendered":"https:\/\/navaxcollege.com\/blog\/?p=1244"},"modified":"2025-04-28T13:05:40","modified_gmt":"2025-04-28T09:35:40","slug":"building-secure-apis-with-nodejs-and-expressjs","status":"publish","type":"post","link":"https:\/\/navaxcollege.com\/blog\/building-secure-apis-with-nodejs-and-expressjs\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0633\u0627\u062e\u062a API \u0628\u0627 NodeJS \u0648 ExpressJS"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0628\u0633\u062a\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648 \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062e\u062f\u0645\u0627\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0648 \u0627\u06cc\u062c\u0627\u062f \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0634\u0631\u06a9\u062a\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0627\u0632 Node.js \u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0647\u0631\u0647 \u0645\u06cc\u200c\u0628\u0631\u0646\u062f\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0627\u0647\u0645\u06cc\u062a \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645 \u0631\u0627 \u062f\u0648\u0686\u0646\u062f\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u0641\u0631\u06cc\u0645\u0648\u0631\u06a9 Express.js \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u06cc\u0634\u0631\u0648\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a API \u0647\u0627 \u0645\u0637\u0631\u062d \u0627\u0633\u062a \u0648 TypeScript \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0646\u0648\u0639\u200c\u062f\u0647\u06cc \u062f\u0642\u06cc\u0642\u060c \u0627\u0631\u0632\u0634 \u0627\u0641\u0632\u0648\u062f\u0647\u200c\u0627\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0648 \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0628\u0647 \u0627\u0631\u0645\u063a\u0627\u0646 \u0645\u06cc\u200c\u0622\u0648\u0631\u062f. \u062a\u0631\u06a9\u06cc\u0628 TypeScript \u0648 Express.js \u0627\u0645\u06a9\u0627\u0646 \u0633\u0627\u062e\u062a \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0648 \u0645\u0642\u0627\u0648\u0645 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u0622\u0648\u0631\u062f. \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u060c \u062a\u0623\u0645\u06cc\u0646 \u0627\u0645\u0646\u06cc\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0627\u0632 \u0627\u0647\u0645\u06cc\u062a \u0628\u0627\u0644\u0627\u06cc\u06cc \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u06cc\u06af\u06cc\u0631\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0632\u0628\u0627\u0646 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/strong>. \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 TypeScript \u0646\u06cc\u0632 \u0645\u0632\u06cc\u062a \u0628\u0632\u0631\u06af\u06cc \u0628\u0647 \u0634\u0645\u0627\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u062f\u0631\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a API REST<\/strong>\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 <code>GET<\/code>\u060c <code>POST<\/code>\u060c <code>PUT<\/code> \u0648 <code>DELETE<\/code>.<\/li>\n\n\n\n<li><strong>\u0646\u0635\u0628 Node.js \u0648 NPM \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645<\/strong>. \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a <code>node -v<\/code> \u0648 <code>npm -v<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u0627\u0646\u062a\u062e\u0627\u0628 \u06cc\u06a9 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u0646\u0627\u0633\u0628<\/strong>. \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 Visual Studio Code \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u06af\u0632\u06cc\u0646\u0647\u200c\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Node.js \u0628\u0647 \u0634\u0645\u0627\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0648\u0627\u0631\u062f \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u062a\u0648\u0633\u0639\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0645\u0648\u0627\u0631\u062f \u0641\u0648\u0642\u060c \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc API \u0648 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0633\u0627\u062e\u062a \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u06a9\u0645\u06a9 \u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u062f\u0627\u0634\u062a\u0646 \u0622\u06af\u0627\u0647\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0622\u0646\u0647\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u060c \u0627\u0632 \u062f\u06cc\u06af\u0631 \u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0645\u0648\u0631\u062f \u062a\u0648\u062c\u0647 \u0642\u0631\u0627\u0631 \u06af\u06cc\u0631\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062c\u062f\u06cc\u062f NodeJS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0622\u063a\u0627\u0632 \u06a9\u0627\u0631 \u0628\u0627 NodeJS\u060c \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0645\u062d\u0644\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062d\u0644 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u0639\u0645\u0644 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f. \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u067e\u0648\u0634\u0647\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 NodeJS \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 NodeJS \u0648 NPM \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a <code>node -v<\/code> \u0648 <code>npm -v<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0646\u0635\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 <code>npm init<\/code>\u060c \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f NodeJS \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u062a\u0645\u0627\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0634\u0645\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u062f\u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 \u0686\u0646\u062f\u06cc\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u06cc\u062f. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631\u060c \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>npm install express typescript @types\/node @types\/express<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u060c \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u06a9\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a TypeScript \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc TypeScript \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>npx tsc --init<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 <code>tsconfig.json<\/code> \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;JSON&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">  &quot;compilerOptions&quot;: {\n    &quot;target&quot;: &quot;ES6&quot;,\n    &quot;module&quot;: &quot;commonjs&quot;,\n    &quot;strict&quot;: true,\n    &quot;esModuleInterop&quot;: true,\n    &quot;forceConsistentCasingInFileNames&quot;: true,\n    &quot;skipLibCheck&quot;: true,\n    &quot;outDir&quot;: &quot;.\/dist&quot;\n  },\n  &quot;include&quot;: [&quot;src&quot;],\n  &quot;exclude&quot;: [&quot;node_modules&quot;]\n}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u067e\u0627\u06cc\u0647 \u0628\u062f\u0648\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 <code>src<\/code> \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0627\u0645 <code>server.ts<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u06a9\u062f\u0647\u0627\u06cc \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;TypeScript&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">\/*Path of the file: project-root\/src\/server.ts*\/\n\nimport express from 'express';\nimport dotenv from 'dotenv';\nimport router from '.\/routes';\n\ndotenv.config();\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.use(express.json());\napp.use('\/api', router);\n\napp.listen(PORT, () =&gt; {\n  console.log(`Server is running on http:\/\/localhost:${PORT}`);\n});<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627\u060c \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0633\u06cc\u0631\u0647\u0627\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 <code>routes<\/code> \u062f\u0631\u0648\u0646 \u067e\u0648\u0634\u0647 <code>src<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 <code>index.ts<\/code> \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0645\u0633\u0626\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0633\u06cc\u0631\u0647\u0627 \u0648 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 API \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;TypeScript&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">\/*Path of the file: project-root\/src\/routes\/index.ts*\/\n\nimport { Router } from 'express';\nimport { \n    getAllBooks, \n    getBookById, \n    addNewBook, \n    removeBook \n} from '..\/controllers\/bookController';\n\nconst router = Router();\n\nrouter.get('\/books', getAllBooks);\nrouter.get('\/books\/:id', getBookById);\nrouter.post('\/books', addNewBook);\nrouter.delete('\/books\/:id', removeBook);\n\nexport default router;<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0645\u062b\u0644\u0627 \u0628\u0647 \u0646\u0627\u0645 \u06a9\u062a\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0648\u0638\u06cc\u0641\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u067e\u0627\u0633\u062e \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc API \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 <code>controllers<\/code> \u0632\u06cc\u0631 \u067e\u0648\u0634\u0647 <code>src<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 <code>bookController.ts<\/code> \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u06a9\u062f \u06a9\u0646\u062a\u0631\u0644\u0631 \u0628\u0647 \u06af\u0648\u0646\u0647\u200c\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a API \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632\u060c \u0622\u0646 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u062f \u0648 \u0633\u067e\u0633 \u067e\u0627\u0633\u062e \u0645\u0646\u0627\u0633\u0628\u06cc \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;TypeScript&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">\/*Path of the file: project-root\/src\/controllers\/userController.ts*\/\n\nimport { Request, Response } from 'express';\nimport { getBooks, findBookById, addBook, deleteBook } from '..\/services\/bookService';\n\nexport const getAllBooks = (req: Request, res: Response): void =&gt; {\n  const books = getBooks();\n  res.json(books);\n};\n\nexport const getBookById = (req: Request, res: Response): void =&gt; {\n  const bookId = parseInt(req.params.id);\n\n  if (isNaN(bookId)) {\n    res.status(400).json({ message: 'Invalid book ID' });\n    return;\n  }\n\n  const book = findBookById(bookId);\n  if (!book) {\n    res.status(404).json({ message: 'Book not found' });\n    return;\n  }\n\n  res.json(book);\n};\n\nexport const addNewBook = (req: Request, res: Response): void =&gt; {\n  const { title, author, publishedYear } = req.body;\n\n  if (!title || !author || !publishedYear) {\n    res.status(400).json({ message: 'Missing required fields' });\n    return;\n  }\n\n  const newBook = {\n    id: Date.now(),\n    title,\n    author,\n    publishedYear\n  };\n\n  addBook(newBook);\n  res.status(201).json(newBook);\n};\n\nexport const removeBook = (req: Request, res: Response): void =&gt; {\n  const bookId = parseInt(req.params.id);\n\n  if (isNaN(bookId)) {\n    res.status(400).json({ message: 'Invalid book ID' });\n    return;\n  }\n\n  const book = findBookById(bookId);\n  if (!book) {\n    res.status(404).json({ message: 'Book not found' });\n    return;\n  }\n\n  deleteBook(bookId);\n  res.status(200).json({ message: 'Book deleted successfully' });\n};<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u060c \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0648\u0642\u062a \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 <code>services<\/code> \u0632\u06cc\u0631 \u067e\u0648\u0634\u0647 <code>src<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 <code>bookService.ts<\/code> \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0627\u0645\u0644 \u06a9\u062f\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06a9\u062a\u0627\u0628 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f \u0648 \u0627\u0645\u06a9\u0627\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u062a\u0627\u0628 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;JSON&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">\/*Path of the file: project-root\/src\/data\/books.json*\/\n\n[\n    {\n        &quot;id&quot;: 1,\n        &quot;title&quot;: &quot;To Kill a Mockingbird&quot;,\n        &quot;author&quot;: &quot;Harper Lee&quot;,\n        &quot;publishedYear&quot;: 1960\n    },\n    {\n        &quot;id&quot;: 2,\n        &quot;title&quot;: &quot;1984&quot;,\n        &quot;author&quot;: &quot;George Orwell&quot;,\n        &quot;publishedYear&quot;: 1949\n    },\n    {\n        &quot;id&quot;: 3,\n        &quot;title&quot;: &quot;Pride and Prejudice&quot;,\n        &quot;author&quot;: &quot;Jane Austen&quot;,\n        &quot;publishedYear&quot;: 1813\n    }\n]<\/pre><\/div>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;TypeScript&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">\/*Path of the file: project-root\/src\/services\/bookService.ts*\/\n\nimport fs from 'fs';\nimport path from 'path';\n\ninterface Book {\n  id: number;\n  title: string;\n  author: string;\n  publishedYear: number;\n}\n\nlet books: Book[] = [];\n\nexport const initializeBooks = (): void =&gt; {\n  const filePath = path.join(__dirname, '..\/data\/books.json');\n  const data = fs.readFileSync(filePath, 'utf-8');\n  books = JSON.parse(data);\n};\n\nexport const getBooks = (): Book[] =&gt; {\n  return books;\n};\n\nexport const findBookById = (id: number): Book | undefined =&gt; {\n  return books.find((b) =&gt; b.id === id);\n};\n\nexport const addBook = (newBook: Book): void =&gt; {\n  books.push(newBook);\n};\n\nexport const deleteBook = (id: number): void =&gt; {\n  books = books.filter((b) =&gt; b.id !== id);\n};\n\nexport const saveBooks = (): void =&gt; {\n  const filePath = path.join(__dirname, '..\/data\/books.json');\n  fs.writeFileSync(filePath, JSON.stringify(books, null, 2));\n};<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644\u060c \u06a9\u062f <code>server.ts<\/code> \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u062f \u0648 \u0633\u067e\u0633 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>package.json<\/code> \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 <code>npm start<\/code>\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0627\u06cc\u062f \u067e\u06cc\u063a\u0627\u0645\u06cc \u0645\u0628\u0646\u06cc \u0628\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;TypeScript&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">\/*Path of the file: project-root\/src\/server.ts*\/\n\nimport express from 'express';\nimport dotenv from 'dotenv';\nimport router from '.\/routes';\nimport { initializeBooks } from '.\/services\/bookService';\n\ndotenv.config();\n\ninitializeBooks();\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.use(express.json());\napp.use('\/api', router);\n\napp.listen(PORT, () =&gt; {\n  console.log(`Server is running on http:\/\/localhost:${PORT}`);\n});<\/pre><\/div>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;JSON&quot;,&quot;language&quot;:&quot;HTML&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;html&quot;}\">*Path of the file: project-root\/package.json*\/\n...rest of file\n\n  &quot;scripts&quot;: {\n    &quot;test&quot;: &quot;echo \\&quot;Error: no test specified\\&quot; &amp;&amp; exit 1&quot;,\n    &quot;start&quot;: &quot;ts-node-dev src\/server.ts&quot;\n  },\n...rest of file<\/pre><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"577\" height=\"110\" src=\"https:\/\/navaxcollege.com\/blog\/wp-content\/uploads\/2025\/04\/screenshot-2024-12-05-at-41739pm.png\" alt=\"\" class=\"wp-image-1421\" srcset=\"https:\/\/navaxcollege.com\/blog\/wp-content\/uploads\/2025\/04\/screenshot-2024-12-05-at-41739pm.png 577w, https:\/\/navaxcollege.com\/blog\/wp-content\/uploads\/2025\/04\/screenshot-2024-12-05-at-41739pm-300x57.png 300w\" sizes=\"(max-width: 577px) 100vw, 577px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:39px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u0622\u0632\u0645\u0648\u0646 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc (APIs) \u0628\u062f\u0648\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u06a9\u0647 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc (API) \u062e\u0648\u062f \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f <strong>Postman<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0622\u062f\u0631\u0633 <code>http:\/\/localhost:3000\/api\/books<\/code>\u060c \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 API \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u067e\u0627\u0633\u062e \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API \u0628\u0631\u0627\u06cc \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 Postman \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0622\u062f\u0631\u0633 \u0622\u0646 \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c \u0627\u0632 \u0622\u062f\u0631\u0633 <code>http:\/\/localhost:3000\/api\/books<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u060c \u0627\u0632 <code>http:\/\/localhost:3000\/api\/books\/:id<\/code> \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u0645\u0647\u0645 \u062f\u0631 \u0622\u0632\u0645\u0648\u0646<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0631\u0648\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc \u0635\u062d\u06cc\u062d API \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u060c \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627 JWT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06a9\u0646\u0648\u0646 \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u0646\u06cc\u062a API \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0628\u0647 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u062a\u0627\u0628 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 <code>users.json<\/code> \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u062f\u0648 \u0641\u0627\u06cc\u0644 <code>userService.ts<\/code> \u0648 <code>userController.ts<\/code> \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0648\u0638\u06cc\u0641\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062a\u0627\u0628\u0639 <strong>middleware<\/strong> \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc API \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0639\u062a\u0628\u0631 \u0645\u06cc\u200c\u0622\u06cc\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc <code>middleware<\/code> \u062f\u0631 <code>src<\/code> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 <code>authMiddleware.ts<\/code> \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627 \u0628\u0647 \u0647\u0631 \u062a\u0645\u0627\u0633 API \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u062a\u0627\u0628 \u0628\u0627\u06cc\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0622\u0632\u0645\u0648\u0646 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc (APIs) \u0628\u0627 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06a9\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627 \u0628\u0647 API \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0633 \u0628\u0627 API \u0628\u062f\u0648\u0646 \u0627\u0631\u0627\u0626\u0647 \u062a\u0648\u06a9\u0646 JWT \u0645\u0639\u062a\u0628\u0631\u060c \u0645\u0646\u062c\u0631 \u0628\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0637\u0627 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0647\u0631 \u06af\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u062f\u0631\u0633 <code>http:\/\/localhost:3000\/api\/login<\/code> \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u060c \u06cc\u06a9 \u062a\u0648\u06a9\u0646 JWT \u0645\u0639\u062a\u0628\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0648\u06a9\u0646 \u0631\u0627 \u0628\u0647 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a API \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0627 \u06a9\u0644\u0645\u0647 <strong>Bearer<\/strong> \u067e\u06cc\u0634\u0648\u0646\u062f \u0628\u0632\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u0635\u062d\u06cc\u062d\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u0648\u0641\u0642<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u0631\u0633\u062a \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u062a\u0648\u06a9\u0646 JWT \u0631\u0627 \u062f\u0631 \u0647\u062f\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/li>\n\n\n\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u060c \u0645\u0631\u0627\u062d\u0644 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0646\u06cc\u062a API \u0647\u0627\u06cc \u0634\u0645\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0645\u062f\u0631\u0646 \u0627\u0633\u062a. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 JWT\u060c \u0634\u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f API \u0647\u0627\u06cc Node.js \u0648 Express \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0645\u0646\u06cc\u062a \u0628\u0647\u062a\u0631\u06cc \u062a\u062c\u0647\u06cc\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JWT (JSON Web Token) \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u06cc\u200c\u062d\u0627\u0644\u062a \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0633\u0631\u0648\u0631 \u0646\u06cc\u0633\u062a \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 Node.js \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0628\u0633\u062a\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648 \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062e\u062f\u0645\u0627\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0648 \u0627\u06cc\u062c\u0627\u062f \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0634\u0631\u06a9\u062a\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0627\u0632 Node.js \u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0647\u0631\u0647 \u0645\u06cc\u200c\u0628\u0631\u0646\u062f\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0627\u0647\u0645\u06cc\u062a \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645 \u0631\u0627 \u062f\u0648\u0686\u0646\u062f\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u0641\u0631\u06cc\u0645\u0648\u0631\u06a9 Express.js \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u06cc\u0634\u0631\u0648\u062a\u0631\u06cc\u0646 &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1306,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tie_source":"","rank_math_description":"\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u0648 \u0627\u0645\u0646\u06cc\u062a API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 NodeJS \u0648 ExpressJS \u0631\u0627 \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0631\u0641\u062a.","rank_math_focus_keyword":"NodeJS, ExpressJS, API, TypeScript, JWT, \u0627\u0645\u0646\u06cc\u062a API","tie_primary_category":"","tie_views":251,"real_source":"https:\/\/dzone.com\/articles\/a-practical-guide-to-securing-nodejs-apis-with-jwt","publish_queue":"451","transformer":"11","thumbnail_prompt":"Create a visually appealing thumbnail image that represents building secure APIs using NodeJS and ExpressJS, featuring elements like code snippets, a server, and a lock symbol to signify security.","footnotes":""},"categories":[36,30],"tags":[],"class_list":["post-1244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-back-end-learning","category-learning"],"featured_image_url":"https:\/\/navaxcollege.com\/blog\/wp-content\/uploads\/2025\/01\/ApI-min.jpg","_links":{"self":[{"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/posts\/1244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/comments?post=1244"}],"version-history":[{"count":3,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/posts\/1244\/revisions"}],"predecessor-version":[{"id":1424,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/posts\/1244\/revisions\/1424"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/media\/1306"}],"wp:attachment":[{"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/media?parent=1244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/categories?post=1244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/navaxcollege.com\/blog\/wp-json\/wp\/v2\/tags?post=1244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}