{"id":100671,"date":"2025-03-08T21:31:57","date_gmt":"2025-03-08T18:01:57","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/"},"modified":"2025-03-08T21:31:57","modified_gmt":"2025-03-08T18:01:57","slug":"error-handling-and-middlewares-345p","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/","title":{"rendered":"\u062f\u0633\u062a \u0632\u062f\u0646 \u0628\u0647 \u062e\u0637\u0627 \u0648 \u0645\u06cc\u0627\u0646\u0647 &#8211; \u062c\u0627\u0645\u0639\u0647 dev"},"content":{"rendered":"<div data-article-id=\"2314374\" id=\"article-body\">\n<ul>\n<li>    \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/li>\n<li>    \u0645\u06cc\u0627\u0646\u0647<\/li>\n<li>    \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c<\/li>\n<li>    \u062e\u0637\u0627\u06cc \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc<\/li>\n<\/ul>\n<p>\u062f\u0631 \u06af\u0632\u06cc\u062f\u0647 \u0642\u0628\u0644\u06cc \u060c \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648 \u0645\u062c\u0648\u0632 \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u060c \u0645\u0627 \u0627\u0632 Joi \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 JSONWeBtoken \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc AUTH \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/#%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7%DB%8C_%D9%85%D8%AD%DB%8C%D8%B7%DB%8C\" >\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/#%D9%85%DB%8C%D8%A7%D9%86%D9%87\" >\u0645\u06cc\u0627\u0646\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC\" >\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/#%D8%AE%D8%B7%D8%A7%DB%8C_%D8%AE%D8%B7_%D9%85%DB%8C%D8%A7%D9%86%DB%8C\" >\u062e\u0637\u0627\u06cc \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/error-handling-and-middlewares-345p\/#%D9%85%D9%86%D8%A7%D8%A8%D8%B9\" >\u0645\u0646\u0627\u0628\u0639<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7%DB%8C_%D9%85%D8%AD%DB%8C%D8%B7%DB%8C\"><\/span>\n<p>  \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0627 JWT \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062e\u0648\u062f \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u060c \u06cc\u06a9 \u0631\u0627\u0632 \u0631\u0627 \u067e\u0634\u062a \u0633\u0631 \u06af\u0630\u0627\u0634\u062a\u06cc\u0645. \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u060c \u0637\u0628\u0642 \u062a\u0648\u0635\u06cc\u0647 \u060c \u0631\u0627\u0632 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f. \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc (\u0645\u0642\u062f\u0627\u0631 \u06a9\u0644\u06cc\u062f) \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0628\u0647 \u0622\u0646 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f \u06cc\u0627 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 API \u062e\u0648\u062f \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u0645 \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u062f\u0631 API \u062a\u0639\u0628\u06cc\u0647 \u06a9\u0646\u06cc\u0645 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc \u062f\u0631 \u0645\u0639\u0631\u0636).<\/p>\n<p>\u06a9\u0646\u0633\u0648\u0644\/\u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f \u060c <code>node<\/code>\u0628\u0634\u0631 \u0631\u0648\u06cc \u06af\u0631\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u060c \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f \u060c <code>process.env<\/code>\u0628\u0634\u0631 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0645\u06cc \u0628\u06cc\u0646\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>Users-MacBook-Pro:expense-tracker-simple-api user<span class=\"nv\">$ <\/span>node\nWelcome to Node.js v22.12.0.\nType <span class=\"s2\">\".help\"<\/span> <span class=\"k\">for <\/span>more information.\n<span class=\"o\">&gt;<\/span> process.env\n<span class=\"o\">{<\/span>\n  NVM_INC: <span class=\"s1\">'\/Users\/user\/.nvm\/versions\/node\/v22.12.0\/include\/node'<\/span>,\n  TERM_PROGRAM: <span class=\"s1\">'vscode'<\/span>,\n  NVM_CD_FLAGS: <span class=\"s1\">''<\/span>,\n  TERM: <span class=\"s1\">'xterm-256color'<\/span>,\n  SHELL: <span class=\"s1\">'\/bin\/bash'<\/span>,\n  HOMEBREW_REPOSITORY: <span class=\"s1\">'\/opt\/homebrew'<\/span>,\n  TMPDIR: <span class=\"s1\">'\/var\/folders\/p8\/60cwd37n1ds64r381rjkt8g80000gn\/T\/'<\/span>,\n  TERM_PROGRAM_VERSION: <span class=\"s1\">'1.97.2'<\/span>,\n  ORIGINAL_XDG_CURRENT_DESKTOP: <span class=\"s1\">'undefined'<\/span>,\n  MallocNanoZone: <span class=\"s1\">'0'<\/span>,\n  NVM_DIR: <span class=\"s1\">'\/Users\/user\/.nvm'<\/span>,\n ...\n<span class=\"o\">}<\/span>\n<span class=\"o\">&gt;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u0642\u062f\u0627\u0631\u06cc \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0647 API \u06af\u0631\u0647 \u062e\u0648\u062f \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u0645 <code>KEY_1=VALUE_1 KEY_2=VALUE_2 node<\/code>\u0628\u0634\u0631 \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u0645 \u060c \u062f\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u06a9\u0644\u06cc\u062f\u06cc \u062a\u0627\u0632\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u062e\u0634\u06cc \u0627\u0632 \u067e\u0627\u0633\u062e \u0645\u0627 \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<blockquote>\n<p>NB: \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 repr node \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>control + C<\/code><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>Users-MacBook-Pro:expense-tracker-simple-api user<span class=\"nv\">$ KEY_1<\/span><span class=\"o\">=<\/span>VALUE_1 <span class=\"nv\">KEY_2<\/span><span class=\"o\">=<\/span>VALUE_2 node\nWelcome to Node.js v22.12.0.\nType <span class=\"s2\">\".help\"<\/span> <span class=\"k\">for <\/span>more information.\n<span class=\"o\">&gt;<\/span> process.env\n<span class=\"o\">{<\/span>\n  KEY_1: <span class=\"s1\">'VALUE_1'<\/span>,\n  KEY_2: <span class=\"s1\">'VALUE_2'<\/span>,\n  NVM_INC: <span class=\"s1\">'\/Users\/user\/.nvm\/versions\/node\/v22.12.0\/include\/node'<\/span>,\n  NVM_CD_FLAGS: <span class=\"s1\">''<\/span>,\n  TERM: <span class=\"s1\">'xterm-256color'<\/span>,\n  SHELL: <span class=\"s1\">'\/bin\/bash'<\/span>,\n  HOMEBREW_REPOSITORY: <span class=\"s1\">'\/opt\/homebrew'<\/span>,\n  TMPDIR: <span class=\"s1\">'\/var\/folders\/p8\/60cwd37n1ds64r381rjkt8g80000gn\/T\/'<\/span>,\n  TERM_PROGRAM_VERSION: <span class=\"s1\">'1.97.2'<\/span>,\n  ORIGINAL_XDG_CURRENT_DESKTOP: <span class=\"s1\">'undefined'<\/span>,\n  MallocNanoZone: <span class=\"s1\">'0'<\/span>,\n  NVM_DIR: <span class=\"s1\">'\/Users\/user\/.nvm'<\/span>,\n  ...\n<span class=\"o\">}<\/span>\n<span class=\"o\">&gt;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f <code>KEY_1: 'VALUE_1'<\/code> \u0648\u062a <code>KEY_2: 'VALUE_2'<\/code>\u0628\u0634\u0631<\/p>\n<blockquote>\n<p>\u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0631 API \u0645\u0627 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u0648\u0642\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0686\u0627\u067e \u06a9\u0646\u06cc\u0645 <code>process.env<\/code><\/p>\n<\/blockquote>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f \u0628\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0646\u062a\u0642\u0644 \u0634\u062f\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u06cc\u06a9 \u0631\u0627\u0632 \u0631\u0627 \u067e\u0634\u062a \u0633\u0631 \u06af\u0630\u0627\u0634\u062a\u06cc\u0645 \u060c <code>SECRET=\"some secret\" node temp_file.js<\/code> \u0648 \u0645\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc \u0634\u0648\u06cc\u0645 \u060c <code>console.log(process.env.SECRET)<\/code>\u0628\u0634\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f \u06a9\u0647 \u062e\u0631\u0648\u062c\u06cc \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u0645\u0646\u062a\u0642\u0644 \u0634\u062f\u0647 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nv\">SECRET<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"some secret\"<\/span> node temp_file.js\nsome secret\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u063a\u06cc\u0631 \u0639\u0645\u0644\u06cc \u0645\u06cc \u0634\u0648\u062f \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0627 \u0627\u0632 a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>.env<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 <code>env = environment<\/code>\u0628\u0634\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0635\u062f\u0627 \u06a9\u0646\u06cc\u062f <code>.env<\/code>\u0628\u0634\u0631 \u062a\u0645\u0627\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u0627\u0631\u0632\u0634 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0639\u0628\u0648\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u067e\u06cc\u0634 \u0627\u0632 <code>nodejs 20<\/code>\u060c \u0645\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0627 \u0628\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u06cc\u0645 <code>.env<\/code> \u0645\u0642\u0627\u062f\u06cc\u0631 \u0628\u0639\u062f\u0627\u064b \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0628\u062d\u062b \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0641\u0648\u0642 \u060c \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0648\u06cc\u0628 \u0634\u0648\u062f <code>--env-file<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u0648 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc \u0645\u0633\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f <code>.env<\/code> \u0645\u0633\u06cc\u0631 \u067e\u0631\u0648\u0646\u062f\u0647: <code>node --env-file=.env temp_file.js<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>node <span class=\"nt\">--env-file<\/span><span class=\"o\">=<\/span>.env temp_file.js\nsome secret\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u063a\u06cc\u0631 \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0627\u0642\u0639\u06cc \u062a\u0635\u0648\u06cc\u0628 \u0634\u062f\u0647 \u060c \u0686\u06cc\u0632\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 Dotenv \u062d\u0644 \u06a9\u0646\u06cc\u0645. \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0633\u062a\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 Nodejs \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0646\u0627\u0645 \u0628\u0633\u062a\u0647 \u0627\u0633\u062a <code>dotenv<\/code>\u0628\u0634\u0631<\/p>\n<blockquote>\n<p><code>npm i dotenv<\/code><\/p>\n<\/blockquote>\n<p>\u062f\u0631 \u067e\u0631\u0648\u0646\u062f\u0647 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 \u060c <code>require(\"dotenv\/config\")<\/code>\u060c \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u067e\u0631\u0648\u0646\u062f\u0647 \u062e\u0648\u062f. \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0645\u0627 \u0641\u0642\u0637 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u060c <code>node temp_file.js<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">dotenv<\/span><span class=\"dl\">\"<\/span><span class=\"p\">).<\/span><span class=\"nf\">config<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ if the above doesn't work for you, try the approach below<\/span>\n<span class=\"c1\">\/\/ require(\"dotenv\/config\")<\/span>\n\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">SECRET<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0627\u06af\u0631 \u0628\u0627 git \u0622\u0634\u0646\u0627 \u0647\u0633\u062a\u06cc\u062f \u060c \u062d\u062a\u0645\u0627\u064b \u0645\u0633\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0633\u0645\u062a \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0639\u0628\u0648\u0631 \u062f\u0647\u06cc\u062f <code>.env<\/code> \u0628\u0647 <code>.gitignore<\/code><br \/>\u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u06a9\u0647 \u0628\u0627 Git \u0622\u0634\u0646\u0627 \u0646\u06cc\u0633\u062a\u06cc\u062f \u060c Git \u0627\u0628\u0632\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u062f \u0645\u0646\u0628\u0639 \u0634\u0645\u0627\u0633\u062a.<br \/><code>.env<\/code>  \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0627\u0631\u062f\u0627\u062a \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0631\u062f \u0648 \u062f\u0631 \u0645\u0639\u0631\u0636 \u0622\u0646\u0647\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0645\u0646\u062c\u0631 \u0628\u0647 \u0628\u0647\u0631\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0628\u0627\u0644\u0642\u0648\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u06cc\u062f \u0627\u0645\u0627 \u0648\u062d\u0634\u062a \u0646\u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u060c \u0627\u06a9\u0646\u0648\u0646 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>.env<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646 \u0637\u0628\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<blockquote>\n<p>\u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0645\u0646 \u0628\u0648\u062f\u0646 \u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u062a <code>undefined<\/code> \u0648 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f &#8211; \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0641\u0627\u0648\u062a \u0628\u06cc\u0646 NULL \u0648 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0645\u0627 \u0645\u062c\u0628\u0648\u0631 \u0646\u06cc\u0633\u062a\u06cc\u0645 \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645 <code>.env<\/code> \u0628\u0627\u0632 \u060c \u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>sample.env<\/code> \u0641\u0642\u0637 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0631\u0627 \u062b\u0628\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0639\u0628\u0648\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0628\u062f\u0627\u0646\u0646\u062f \u06a9\u0647 \u0686\u0647 \u0686\u06cc\u0632\u06cc <code>.env<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u062f<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%DB%8C%D8%A7%D9%86%D9%87\"><\/span>\n<p>  \u0645\u06cc\u0627\u0646\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0628\u062d\u062b \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0686\u06cc\u0633\u062a. \u0627\u06cc\u0646 \u06cc\u06a9 \u06cc\u0627\u062f\u0622\u0648\u0631\u06cc \u0627\u0633\u062a \u060c \u0648 \u0634\u0627\u06cc\u062f \u0627\u06af\u0631 \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0628\u062d\u062b \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u060c \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644\u0631 \u06cc\u06a9 \u062a\u0627\u0628\u0639 (\u0631\u0648\u0634) \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0627\u0632 \u0641\u0631\u0645 \u0647\u0627 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">[<\/span><span class=\"k\">async<\/span><span class=\"p\">]<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FunctionName<\/span><span class=\"p\">(<\/span><span class=\"nx\">requestObject<\/span><span class=\"p\">,<\/span> <span class=\"nx\">responseObject<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ do something on the request<\/span>\n    <span class=\"c1\">\/\/ return a response<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u06a9\u062a\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627 \u0645\u062a\u0642\u0627\u0636\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0645\u062a\u0642\u0627\u0636\u06cc\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u062f\u0648 \u0634\u06a9\u0644 \u0647\u0633\u062a\u0646\u062f:<\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u060c \u06cc\u06a9 \u0648\u0627\u0633\u0637\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u06cc\u0646 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0648 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">method<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/some route<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">middlewares<\/span><span class=\"p\">,<\/span> <span class=\"nx\">controller<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">[<\/span><span class=\"k\">async<\/span><span class=\"p\">]<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FunctionName<\/span><span class=\"p\">(<\/span><span class=\"nx\">requestObject<\/span><span class=\"p\">,<\/span> <span class=\"nx\">responseObject<\/span><span class=\"p\">,<\/span> <span class=\"nx\">nextMiddleware<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ do something on the request<\/span>\n    <span class=\"c1\">\/\/ return a response if there is an error<\/span>\n    <span class=\"c1\">\/\/ else go to the next middleware<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0646\u0647\u0627 \u062a\u0641\u0627\u0648\u062a \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0633\u0648\u0645 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0644\u0642\u0628 \u062f\u0627\u0631\u062f \u060c <code>next<\/code>\u060c \u0628\u06cc\u0634\u062a\u0631 \u0627\u0648\u0642\u0627\u062a <code>next<\/code> \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0628\u0639\u062f\u06cc \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f (\u06a9\u0646\u062a\u0631\u0644\u0631 \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0648\u0627\u0633\u0637\u0647 \u0627\u0633\u062a).<\/p>\n<p>\u06cc\u06a9 \u0648\u0627\u0633\u0637\u0647 \u0628\u0647 \u0634\u06cc\u0621 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f \u0648 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u063a\u06cc\u06cc\u0631 (\u062d\u0630\u0641 \u060c \u0627\u0641\u0632\u0648\u062f\u0646 \u06cc\u0627 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc) \u0628\u0627\u0631 \u0631\u0627 \u0631\u0647\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0645\u0627 <code>index.js<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ parse request body as json<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">express<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">());<\/span>\n\n<span class=\"c1\">\/\/ register routers<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">userEndpoints<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">expendituresEndpoints<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>  <code>app.use(express.json());<\/code>  \u0648\u0627\u0633\u0637\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u062f\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0628\u0647 JSON \u062a\u062c\u0632\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>  <code>app.use(userEndpoints);<\/code>  \u06a9\u0647 \u0646\u0642\u0627\u0637 \u0627\u0646\u062a\u0647\u0627\u06cc\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f<\/li>\n<li>  <code>app.use(expendituresEndpoints);<\/code>  \u06a9\u0647 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f<\/li>\n<\/ul>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062b\u0628\u062a \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>    \u0632\u0645\u0627\u0646<\/li>\n<li>    \u0631\u0648\u0634 HTTP<\/li>\n<li>    \u0648 \u0645\u0633\u06cc\u0631 \u0628\u0627\u0632\u062f\u06cc\u062f \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<blockquote>\n<p>\u0628\u06cc\u0634\u062a\u0631 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0634\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06cc\u0627\u0641\u062a. <code>req.method<\/code> \u0648\u062a <code>req.originalUrl<\/code>\u0628\u0634\u0631<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ add console logging middleware<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">((<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">log<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">method<\/span><span class=\"p\">}<\/span><span class=\"s2\"> :: <\/span><span class=\"p\">${<\/span>\n        <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">originalUrl<\/span>\n    <span class=\"p\">}<\/span><span class=\"s2\"> - <\/span><span class=\"p\">${<\/span><span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">toISOString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">log<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0648\u0633\u0637 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 (\u06cc\u0627 \u0632\u06cc\u0631) \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f <code>app.use(express.json());<\/code>\u0628\u0634\u0631<\/p>\n<blockquote>\n<p>\u0646\u06a9\u062a\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 Middlewares \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f.<br \/><code>app.use(express.json());<\/code>  \u0642\u0628\u0644 \u0627\u0632 \u0636\u0631\u0628\u0647 \u0647\u0631 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0645\u06cc \u0622\u06cc\u062f \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0622\u0646 \u0645\u0633\u06cc\u0631 \u062a\u062c\u0632\u06cc\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<\/blockquote>\n<p>\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0648\u0633\u0637 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0632 \u0631\u0648\u062a\u0631\u0647\u0627\u06cc \u062b\u0628\u062a \u0634\u062f\u0647 (\u06cc\u0627 \u0645\u0633\u06cc\u0631\u0647\u0627) \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645 \u060c \u0627\u0645\u0627 \u062f\u0631 \u0632\u06cc\u0631 <code>app.use(express.json());<\/code>\u0628\u0634\u0631<\/p>\n<p>\u062f\u0631 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a \u0634\u062f\u0647 \u060c <em>\u0645\u0633\u06cc\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 JWT Auth \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u0646\u062f<\/em>\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0645\u06cc\u0627\u0646\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0631\u0648\u062f\u06cc \u062f\u0627\u0631\u0627\u06cc \u0646\u0634\u0627\u0646\u0647 JWT \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.<\/p>\n<blockquote>\n<p>\u0627\u06af\u0631 \u062a\u0639\u062c\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc \u0627\u0641\u062a\u062f \u06cc\u0627 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0648\u062c\u0648\u062f JWT \u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u06cc\u0627 \u067e\u0627\u0633\u062e \u062e\u0637\u0627 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f. \u0645\u0648\u0636\u0648\u0639 \u067e\u0627\u0633\u062e \u060c <em>\u0633\u0631<\/em>\u060c \u062f\u0631 \u0645\u0639\u0631\u0636 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n<\/blockquote>\n<p>\u0638\u0627\u0647\u0631\u0627\u064b \u060c \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0646\u06cc\u0627\u0632 \u0628\u0647 JWT Auth \u0646\u062f\u0627\u0631\u062f \u060c \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u0646\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062f\u06cc\u06af\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a JWT \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f.<\/p>\n<blockquote>\n<p>\u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0646 <code>authorize<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u0646\u062d\u0648\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 JWT<\/p>\n<\/blockquote>\n<p>\u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0631\u0627 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u062f \u0648 \u0686\u0646\u062f \u0646\u0641\u0631 \u0631\u0627 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u062f\u061f \u062d\u062f\u0648\u062f \u067e\u0646\u062c\u061f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">authReponse<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">authorize<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">.<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">authReponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">isAuthorized<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized, please log in<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648\u0642\u062a\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0647 JWT Auth \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0627\u0631 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627\u0628\u0639\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645. \u062f\u0633\u062a\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u0631\u0648\u06cc \u0622\u0646 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"cm\">\/* checks the header of the incoming request if there is a jwt *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">hasJwt<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ implementation before calling the next function<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u060c \u0645\u06cc\u0627\u0646\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"cm\">\/* authenticates and authorizes user *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">isAuthorized<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ implement user authentication here<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>middlewares.js<\/code> \u0648 \u0627\u0648\u0644\u06cc\u0646 \u0645\u06cc\u0627\u0646\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a (\u062c\u0632\u0626\u06cc\u0627\u062a) \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f <code>logRequest<\/code>\u0628\u0634\u0631<\/p>\n<p><code>(req, res, next)<\/code>  \u062a\u0627 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u062a\u0631\u062a\u06cc\u0628 (\u0645\u0648\u0642\u0639\u06cc\u062a) \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0631\u0639\u0627\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0627\u0633\u0627\u0645\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<\/blockquote>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u062f\u0627\u0631\u0645 \u06cc\u0627 \u0622\u0646\u0686\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ middlewares.js;<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">jwt<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">jsonwebtoken<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n<span class=\"cm\">\/* Logs the request method, route and the time the request was made *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">logRequest<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">log<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">method<\/span><span class=\"p\">}<\/span><span class=\"s2\"> :: <\/span><span class=\"p\">${<\/span>\n        <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">originalUrl<\/span>\n    <span class=\"p\">}<\/span><span class=\"s2\"> - <\/span><span class=\"p\">${<\/span><span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">toISOString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">log<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/* checks the header of the incoming request if there is a jwt *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">hasJwt<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">authorization<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">.<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized, No auth token found<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">isAuthorized<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">authorization<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">.<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">JWT_SECRET<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">SECRET<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">JWT_SECRET<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Something went wrong<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">email<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">jwt<\/span><span class=\"p\">.<\/span><span class=\"nf\">verify<\/span><span class=\"p\">(<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JWT_SECRET<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ now we can fetch the user with email and userId<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">isAuthenticUser<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">users<\/span><span class=\"p\">.<\/span><span class=\"nf\">find<\/span><span class=\"p\">(<\/span>\n        <span class=\"p\">(<\/span><span class=\"nx\">user<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">user<\/span><span class=\"p\">.<\/span><span class=\"nx\">email<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">email<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">user<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">userId<\/span>\n    <span class=\"p\">);<\/span>\n\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">isAuthenticUser<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized, No user matched<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">user<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">email<\/span> <span class=\"p\">};<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">logRequest<\/span><span class=\"p\">,<\/span> <span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span> <span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<p><code>req.someProperty = someValue<\/code>\u060c \u06a9\u062c\u0627 <code>someProperty<\/code> \u0645\u0642\u062f\u0627\u0631 \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f.<br \/>\u0645\u0627 \u067e\u06cc\u0627\u0645 \u062f\u0647\u0646\u062f\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0639\u062f\u06cc \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0634\u06cc\u0648\u0647 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0686\u0631\u062e\u0647 \u0632\u0646\u062f\u06af\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u060c \u0634\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u06a9\u0644 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<\/blockquote>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645 <code>list expenditures<\/code> \u0645\u0633\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <code>hasJwt<\/code> \u0648\u062a <code>isAuthorized<\/code>\u0628\u0634\u0631<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ list expenditures<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/expenditures<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ extra auth token from headers<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">authReponse<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">authorize<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">.<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">authReponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">isAuthorized<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized, please log in<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ parse the auth user id<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">userId<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">authReponse<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ ====================<\/span>\n    <span class=\"c1\">\/\/ get the query string and check if it is not a number or something<\/span>\n    <span class=\"c1\">\/\/ that can be a number else set a default filter value of 0<\/span>\n    <span class=\"kd\">let<\/span> <span class=\"nx\">amountMoreThan<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">query<\/span><span class=\"p\">.<\/span><span class=\"nx\">amountMoreThan<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nf\">isNaN<\/span><span class=\"p\">(<\/span><span class=\"nx\">amountMoreThan<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"nx\">amountMoreThan<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">amountMoreThan<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">expenditures<\/span><span class=\"p\">.<\/span><span class=\"nf\">filter<\/span><span class=\"p\">(<\/span>\n            <span class=\"p\">(<\/span><span class=\"nx\">row<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">row<\/span><span class=\"p\">.<\/span><span class=\"nx\">userId<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">userId<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">row<\/span><span class=\"p\">.<\/span><span class=\"nx\">amount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"nx\">amountMoreThan<\/span>\n        <span class=\"p\">),<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc \u0634\u0648\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ list expenditures<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/expenditures<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ parse the userId and email from the req.user<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">userId<\/span> <span class=\"cm\">\/*,  email *\/<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">user<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ ====================<\/span>\n    <span class=\"c1\">\/\/ get the query string and check if it is not a number or something<\/span>\n    <span class=\"c1\">\/\/ that can be a number else set a default filter value of 0<\/span>\n    <span class=\"kd\">let<\/span> <span class=\"nx\">amountMoreThan<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">query<\/span><span class=\"p\">.<\/span><span class=\"nx\">amountMoreThan<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nf\">isNaN<\/span><span class=\"p\">(<\/span><span class=\"nx\">amountMoreThan<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"nx\">amountMoreThan<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">amountMoreThan<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">expenditures<\/span><span class=\"p\">.<\/span><span class=\"nf\">filter<\/span><span class=\"p\">(<\/span>\n            <span class=\"p\">(<\/span><span class=\"nx\">row<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">row<\/span><span class=\"p\">.<\/span><span class=\"nx\">userId<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">userId<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">row<\/span><span class=\"p\">.<\/span><span class=\"nx\">amount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"nx\">amountMoreThan<\/span>\n        <span class=\"p\">),<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0648 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a (\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647) \u06cc\u06a9 \u0648\u0627\u0633\u0637\u0647 (\u0647\u0627) \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u06cc\u06a9 \u062a\u0645\u0631\u06cc\u0646 \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0646\u062c\u0627\u0645 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u0628\u0642\u06cc\u0647 \u0627\u0633\u062a.<\/p>\n<ul>\n<li>    \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <code>hasJwt, isAuthorized,<\/code>\n<\/li>\n<li>    \u0633\u067e\u0633 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ extra auth token from headers<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">authReponse<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">authorize<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">.<\/span><span class=\"nx\">authorization<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">authReponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">isAuthorized<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized, please log in<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ parse the auth user id<\/span>\n<span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">userId<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">authReponse<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ parse the auth user id<\/span>\n<span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">userId<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">user<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0627\u06af\u0631 \u062a\u0639\u062c\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u062c\u0627 <code>req.user<\/code> \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a \u060c \u067e\u0633 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a (\u06cc\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a) <code>isAuthorized<\/code> \u0648\u0627\u0633\u0637\u0647<\/p>\n<\/blockquote>\n<p>\u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f \u060c \u0648 \u06cc\u06a9 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u060c <code>POST :: \/users\/login - 2025-03-02T14:23:59.310Z<\/code>\u0628\u0634\u0631 \u062a\u0627\u0631\u06cc\u062e \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u062f \u0627\u0645\u0627 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 JWT \u0628\u0647 \u062f\u0633\u062a \u0622\u0645\u062f\u0647 \u062f\u0631 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u0627\u0646\u06cc \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<ul>\n<li>  <code>POST :: \/expenditures - 2025-03-02T14:28:17.173Z<\/code>\n<\/li>\n<li>  <code>GET :: \/expenditures - 2025-03-02T14:28:41.074Z<\/code>\n<\/li>\n<\/ul>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0647\u0632\u06cc\u0646\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0645 \u0648 \u0628\u06cc\u0634 \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/route<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u06cc\u06a9 \u0645\u0648\u0631\u062f \u06a9\u0647 \u0634\u0645\u0627 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a <code>hasJwt, isAuthorized,<\/code> \u062f\u0631 \u062a\u0645\u0627\u0645 \u0645\u0633\u06cc\u0631\u0647\u0627 \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0645\u0627 \u0646\u06cc\u0632 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645.<br \/>\u0628\u0631\u0627\u06cc \u0645\u0628\u062a\u062f\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u062e\u0648\u0628 \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u060c \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0631\u06cc\u0634\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u06cc\u0645.<br \/>\u062f\u0631 \u0622\u0646\u062c\u0627 \u0645\u0648\u0642\u0639\u06cc\u062a \u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a \u06a9\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0633\u0626\u0644\u0647 \u0627\u06cc \u0628\u0627\u0634\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0622\u0633\u06cc\u0628 \u062f\u06cc\u062f\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645 \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<\/blockquote>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u060c<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span><span class=\"p\">,<\/span> <span class=\"nx\">expendituresEndpoints<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/route<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/* some expenditure request handling *\/<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0648\u0644\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f \u0627\u0645\u0627 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0622\u0646\u0647\u0627 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u0631\u0648\u0646\u062f\u0647 \u0641\u0647\u0631\u0633\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u067e\u0631\u0648\u0646\u062f\u0647 \u0641\u0647\u0631\u0633\u062a \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ register routers<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">userEndpoints<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span><span class=\"p\">,<\/span> <span class=\"nx\">expendituresEndpoints<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ register routers<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/users<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">userEndpoints<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/expenditures<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">hasJwt<\/span><span class=\"p\">,<\/span> <span class=\"nx\">isAuthorized<\/span><span class=\"p\">,<\/span> <span class=\"nx\">expendituresEndpoints<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0645\u0627 \u0648\u0627\u0631\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u0634\u062f <code>userEndpoints<\/code> \u0648\u062a <code>expendituresEndpoints<\/code> \u0648 \u0633\u067e\u0633 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u067e\u0627\u06cc\u0647 (\u0645\u0633\u06cc\u0631\u0647\u0627) \u0631\u0627 \u0628\u0631\u062f\u0627\u0631\u06cc\u062f. <code>app.delete(\"\/expenditures\/:id\",...)<\/code> \u0645\u06cc \u0634\u0648\u062f \u060c <code>app.delete(\"\/:id\",...)<\/code>\u0628\u0634\u0631<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0627 \u0645\u0641\u0647\u0648\u0645 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0622\u0634\u0646\u0627 \u0647\u0633\u062a\u06cc\u0645 \u060c \u0628\u0627 \u0646\u0648\u0634\u062a\u0646 \u0622\u0646 \u062e\u0648\u062f\u0645\u0627\u0646 \u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0648\u06cc. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0647\u062f\u0631\u0647\u0627 \u060c \u0631\u0634\u062a\u0647 \u0647\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648 \u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0648 \u0628\u062f\u0646 \u0628\u0647 API \u062e\u0648\u062f \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u06af\u0648\u06cc\u06cc\u0645 \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc \u0631\u0648\u062f \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f (\u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0622\u0646 \u0628\u06af\u06cc\u0631\u06cc\u062f).<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u0632 \u062b\u0628\u062a \u0646\u0627\u0645 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0648\u0631\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">email<\/span><span class=\"p\">,<\/span> <span class=\"nx\">password<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">body<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">validationResponse<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">authValidationSchema<\/span><span class=\"p\">.<\/span><span class=\"nf\">validate<\/span><span class=\"p\">({<\/span>\n    <span class=\"nx\">email<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">password<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">validationResponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"nx\">validationResponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">,<\/span>\n        <span class=\"c1\">\/\/ message: validationResponse.error.details[0].message,<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>    \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0627\u0632 \u0628\u062f\u0646 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a: <code>const { email, password } = req.body;<\/code>\u0628\u0634\u0631<\/li>\n<li>    \u0645\u0627 \u062a\u0645\u0627\u0633 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 <code>validate<\/code> \u0631\u0648\u0634 \u06cc\u06a9 \u0637\u0631\u062d \u062c\u0648\u06cc \u060c <code>const validationResponse = authValidationSchema.validate({ ...})<\/code>\n<\/li>\n<li>    \u06af\u0631\u0641\u062a\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627<\/li>\n<\/ul>\n<p>\u06cc\u06a9 \u0648\u0633\u0637 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">[<\/span><span class=\"k\">async<\/span><span class=\"p\">]<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FunctionName<\/span><span class=\"p\">(<\/span><span class=\"nx\">requestObject<\/span><span class=\"p\">,<\/span> <span class=\"nx\">responseObject<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ do something on the request<\/span>\n    <span class=\"c1\">\/\/ return a response<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u0647 \u0647\u0645\u0647 \u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u062f\u0627\u0646\u06cc\u0645. \u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u062a\u0627\u0628\u0639\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">FunctionName<\/span><span class=\"p\">(<\/span><span class=\"nx\">parameters<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nf\">function <\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"cm\">\/* do something *\/<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">};<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627 \u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0637\u0631\u062d \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f \u0648 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 (\u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc) \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0645\u0644\u0627\u06a9 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0634\u062f: <em>\u0628\u062f\u0646\u0647<\/em>\u0628\u0627 <em>\u067e\u0627\u0631\u0627\u0645\u062a<\/em>\u0628\u0627 <em>\u067e\u0631\u0633\u0634<\/em> \u06cc\u0627 <em>\u0639\u0646\u0627\u0648\u06cc\u0646<\/em>\u0628\u0634\u0631<\/p>\n<blockquote>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0628\u0647 \u0647\u0631 \u0646\u0627\u0645\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645 \u060c <code>validation, validationMiddleware, etc<\/code><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"cm\">\/* validation middleware: takes schema and a request property*\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">schema<\/span><span class=\"p\">,<\/span> <span class=\"nx\">requestProperty<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nf\">function <\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">validationResponse<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">schema<\/span><span class=\"p\">.<\/span><span class=\"nf\">validate<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">[<\/span><span class=\"nx\">requestProperty<\/span><span class=\"p\">]);<\/span>\n\n        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">validationResponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n                <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n                <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"nx\">validationResponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">,<\/span>\n                <span class=\"c1\">\/\/ message: validationResponse.error.details[0].message,<\/span>\n            <span class=\"p\">});<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">};<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0622\u0634\u0646\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f.<\/p>\n<ul>\n<li>    \u0645\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 <code>schema<\/code> \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f <code>requestProperty<\/code>\u0628\u0634\u0631<\/li>\n<li>  <code>req[requestProperty]<\/code>\u060c \u0627\u06af\u0631 <code>requestProperty<\/code> \u0622\u06cc\u0627 \u0628\u062f\u0646 \u0646\u062a\u06cc\u062c\u0647 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a <code>req[\"body\"]<\/code> \u06a9\u062f\u0627\u0645 \u0627\u0633\u062a <code>req.body<\/code>\u0628\u0634\u0631<\/li>\n<\/ul>\n<p>\u062f\u0631 <em>\u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0631\u062f\u0646<\/em> \u0645\u0633\u06cc\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f <code>app.post(\"\/signup\", (req, res) =&gt; {...})<\/code>\u0628\u0634\u0631 \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f\u06cc \u06a9\u0647 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0627\u0631\u06cc\u0645 \u060c \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0627\u0632 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0639\u0628\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u062f (\u062f\u0631 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u0627\u0632 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f).<\/p>\n<p>\u062f\u0631 <code>sign up<\/code> \u0645\u0633\u06cc\u0631 \u0628\u0627\u06cc\u062f \u0634\u0628\u06cc\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/signup<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">authValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u0627\u0646 refactor \u0631\u0627 \u062f\u0631 <em>\u0648\u0631\u0648\u062f<\/em>\u0628\u0634\u0631<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/login<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">authValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062a\u0645\u0631\u06cc\u0646 \u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0647\u0632\u06cc\u0646\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0639\u0645\u0648\u0645\u06cc \u0648 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0645\u0646\u0627\u0633\u0628 \u0628\u0647 \u0622\u0646 \u060c \u0628\u0627\u0632\u067e\u0631\u062f\u0627\u062e\u062a \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0631\u0634\u062a\u0647 \u0627\u06cc \u060c \u0645\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0637\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0645\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"cm\">\/* \/users *\/<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/signup<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">authValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/login<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">authValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"cm\">\/* \/expenditures*\/<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">expenditureQuerySchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">query<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/:id<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">IdValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">params<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">createExpenseSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">put<\/span><span class=\"p\">(<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">\/:id<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">IdValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">params<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">updateExpenseSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n    <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"cm\">\/*  *\/<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">);<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"k\">delete<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/:id<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">validation<\/span><span class=\"p\">(<\/span><span class=\"nx\">IdValidationSchema<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">params<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AE%D8%B7%D8%A7%DB%8C_%D8%AE%D8%B7_%D9%85%DB%8C%D8%A7%D9%86%DB%8C\"><\/span>\n<p>  \u062e\u0637\u0627\u06cc \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0634\u0627\u06cc\u062f \u060c \u0634\u0645\u0627 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0627 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u062e\u0637\u0627 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0647 \u0627\u06cc\u0645:<\/p>\n<ul>\n<li>  <code>TokenExpiredError: jwt expired<\/code>\n<\/li>\n<li>  <code>JsonWebTokenError: invalid token<\/code>\n<\/li>\n<\/ul>\n<p>\u062f\u0631 \u0628\u0639\u0636\u06cc \u0627\u0632 \u0646\u0642\u0627\u0637 \u0645\u0648\u0638\u0641 \u0627\u0633\u062a. \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0645\u0635\u0631\u0641 API (\u0627\u062f\u063a\u0627\u0645) \u0645\u0627 \u0631\u062e \u062f\u0647\u062f \u060c \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645. \u06cc\u06a9 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a <code>try-and-catch<\/code>\u0628\u0634\u0631 \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u06a9\u0631\u062f\u06cc\u0645 <code>try-and-catch<\/code> \u062f\u0631 JavaScript Essentials: \u0642\u0633\u0645\u062a 5.<\/p>\n<p>\u0645\u0627 \u06a9\u062f\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u0645\u06cc \u067e\u06cc\u0686\u06cc\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062e\u0637\u0627\u06cc\u06cc \u062f\u0631 \u06cc\u06a9 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f <code>try-and-catch<\/code> \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u06cc\u06cc \u060c \u067e\u06cc\u0627\u0645 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0631\u0627 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 \u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f. \u0645\u062b\u0627\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">someRequestHandler<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n        <span class=\"cm\">\/* Do something *\/<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">200<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Something went wrong please, try again later.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u062d\u062f\u0648\u062f \u0634\u0634 \u0645\u0633\u06cc\u0631 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0631\u0633\u062a \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f \u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u0628\u0631\u0637\u0631\u0641 \u06a9\u0646\u06cc\u0645. \u0645\u0648\u0627\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0641\u0648\u0642 \u0627\u0634\u06a9\u0627\u0644\u06cc \u0646\u062f\u0627\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u062f\u0631 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u062c\u0627\u0631\u06cc \u060c \u0648\u0642\u062a\u06cc \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u0645\u06cc \u062f\u0647\u062f \u060c \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0631\u0633\u062a \u0628\u062f\u0627\u0646\u06cc\u0645 \u0648 \u062d\u0644 \u06a9\u0646\u06cc\u0645\u061f \u0646\u06a9\u062a\u0647 \u0645\u0646\u0641\u06cc \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0641\u0648\u0642 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u062f\u06cc\u0627\u0628\u06cc\/\u067e\u0634\u062a\u0647 \u062e\u0637\u0627 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a \u0628\u062f\u0647\u06cc\u0645 \u0648 \u0628\u0647 \u0645\u0627 \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0648 \u062f\u0631 \u06a9\u062c\u0627 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. \u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0646\u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0628\u0627\u0639\u062b \u062e\u0637\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06a9\u0633\u067e\u0631\u0633 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0645\u06cc \u0646\u0627\u0645\u06cc\u0645 <em>\u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc \u062e\u0637\u0627\u06cc \u062e\u0637\u0627\u06cc<\/em>\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u0647\u0631 \u0646\u0648\u0639 \u0648\u0627\u0633\u0637\u0647 \u06cc\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u060c <code>(req, res, next)=&gt; {}<\/code>\u0628\u0634\u0631 \u0622\u0646\u0686\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u062e\u0627\u0635 \u0645\u06cc \u06a9\u0646\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062c\u0627\u06cc \u0633\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0627\u0631\u0627\u06cc \u0686\u0647\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0633\u062a: <code>(error, req, res, next)=&gt; {}<\/code>\u0628\u0634\u0631 \u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u0647\u0631 \u0645\u06cc\u0627\u0646\u06cc \u0633\u0641\u0627\u0631\u0634 \u0633\u0641\u0627\u0631\u0634 \u0627\u0633\u062a \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0622\u0646 (\u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u06cc\u0627 \u062f\u0646\u0628\u0627\u0644\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631) \u0628\u0627\u06cc\u062f \u062e\u0637\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06af\u0631\u0641\u062a\u0627\u0631\u06cc\u0645 \u0639\u0628\u0648\u0631 \u06a9\u0646\u06cc\u0645 <code>catch (error) { \/* *\/ }<\/code> \u0628\u0647 <code>next<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f. \u0645\u062b\u0627\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">someRequestHandler<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n        <span class=\"cm\">\/* Do something *\/<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06a9\u0646\u0648\u0646 \u060c \u0628\u0647 \u062c\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u06a9\u0644\u06cc \u06a9\u0647 \u060c <code>\"Something went wrong please, try again later.\",<\/code> \u062d\u062a\u06cc \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062f\u0627\u0646\u06cc\u0645 \u0686\u0647 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a \u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u0627 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0641\u062f\u0627\u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u062a\u062c\u0632\u06cc\u0647 \u0648 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u067e\u0627\u0633\u062e \u062e\u0637\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>\u0627\u0645\u0636\u0627\u06cc \u0645\u06cc\u0627\u0646\u06cc \u062f\u0633\u062a\u06cc \u062e\u0637\u0627\u06cc \u0645\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"cm\">\/* error-handling middleware *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">errorHandler<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">,<\/span> <span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"cm\">\/*  *\/<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u0632 <code>instanceof<\/code> \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0628\u0631\u0631\u0633\u06cc \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0634\u06cc\u0621 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0627\u0633\u062a. \u062a\u0627 \u06a9\u0646\u0648\u0646 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0622\u06af\u0627\u0647 \u0647\u0633\u062a\u06cc\u0645 <code>TokenExpiredError<\/code> \u0648\u062a <code>JsonWebTokenError<\/code>\u060c \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 JWT \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0648\u0642\u062a\u06cc \u0645\u0637\u0645\u0626\u0646 \u0646\u06cc\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0686\u06cc\u0633\u062a \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u067e\u0627\u0633\u062e \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0645\u0648\u0646\u0647 \u062e\u0637\u0627 \u0648 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062c\u0647\u0627\u0646\u06cc \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u0645. \u0645\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0637\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0646\u062f\u0647 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u06cc\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631 \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 \u0648 \u063a\u06cc\u0631\u0647 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ require TokenExpiredError and JsonWebTokenError from jwt<\/span>\n<span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">TokenExpiredError<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JsonWebTokenError<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">jsonwebtoken<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">...<\/span>\n\n\n<span class=\"cm\">\/* error-handling middleware *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">errorHandler<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">,<\/span> <span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span> <span class=\"k\">instanceof<\/span> <span class=\"nx\">TokenExpiredError<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">401<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized: please log in<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n <span class=\"p\">});<\/span>\n <span class=\"p\">}<\/span>\n\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span> <span class=\"k\">instanceof<\/span> <span class=\"nx\">JsonWebTokenError<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">401<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unauthorized: please format your auth token<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n <span class=\"p\">});<\/span>\n <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ anything else<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Internal server error, something went wrong please try again<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"c1\">\/\/ as if the same error would not occur again when the user tries again \ud83d\ude02<\/span>\n <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0646 \u0637\u0631\u0641\u062f\u0627\u0631 \u062a\u06a9\u06cc\u0647 \u0628\u0631 \u06a9\u062f\u0647\u0627\u06cc \u0648\u0636\u0639\u06cc\u062a \u0646\u06cc\u0633\u062a\u0645. \u0645\u0646 \u0645\u0639\u062a\u0642\u062f\u0645 API \u0647\u0627\u06cc \u0645\u0646 &#8220;\u0634\u062e\u0635 \u062b\u0627\u0644\u062b&#8221; \u0647\u0633\u062a\u0646\u062f \u0648 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0648\u0636\u0639\u06cc\u062a \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u06cc\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u062e\u0627\u0635 \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0627\u0633\u062a. \u0634\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0634\u062a\u0631\u06cc \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0648\u062c\u0648\u062f \u06cc\u06a9 API \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f <code>400<\/code> \u067e\u0627\u0633\u062e \u062e\u0637\u0627 \u06cc\u0627 <code>500<\/code> \u067e\u0627\u0633\u062e \u062e\u0637\u0627\u061f \u0628\u0631\u062e\u06cc <code>http<\/code> \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u06af\u0634\u062a \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a \u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc \u06a9\u0646\u0646\u062f <code>200<\/code> \u06cc\u0627 <code>201<\/code>\u0628\u0634\u0631 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u062e\u0648\u062f\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 &#8220;\u0634\u062e\u0635 \u062b\u0627\u0644\u062b&#8221; \u060c \u0645\u0646 \u06cc\u06a9 \u06a9\u062f \u062e\u0637\u0627 \u060c \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a \u06cc\u0627 \u06a9\u0644\u06cc\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u0645 \u0648 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u067e\u0633 \u0627\u0632 \u0622\u0646 \u06a9\u0644\u06cc\u062f \u062d\u0636\u0648\u0631 \u0645\u06cc \u06cc\u0627\u0628\u062f \u060c \u067e\u0633 \u0627\u0632 \u0622\u0646 \u0686\u06cc\u0632\u06cc \u067e\u06cc\u0634 \u0622\u0645\u062f. \u0645\u0646 \u06cc\u06a9 \u0645\u0635\u0631\u0641 \u06a9\u0631\u062f\u0647 \u0627\u0645 <em>3<\/em> API \u062d\u0632\u0628 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0628\u062e\u0634 \u0645\u0648\u0641\u0642\u06cc\u062a \u0648 \u062e\u0637\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"success\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"statusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"000001\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{},<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"data\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{}<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0628\u0627 \u062e\u0637\u0627 \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0646\u0642\u0637\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645 \u0627\u0645\u0627 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062b\u0628\u062a \u0634\u062f\u0647 \u0645\u0627 \u0628\u0627\u0634\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062a\u0645\u0631\u06cc\u0646 \u060c \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u067e\u06cc\u0686\u06cc\u062f \u060c \u062a\u0645\u0627\u0645 \u062f\u0633\u062a\u06af\u06cc\u0631\u0646\u062f\u06af\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0634\u0648\u0646\u062f <code>try<\/code> \u0648\u062a <code>catch<\/code> \u0648 \u062e\u0637\u0627 \u0631\u0627 \u0628\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0639\u062f\u06cc \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc \u062e\u0637\u0627\u06cc \u062e\u0637\u0627 \u0627\u0646\u062c\u0627\u0645 \u0646\u062f\u0647\u06cc\u062f. \u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u0627\u062d\u062a\u06cc\u0627\u062c \u062f\u0627\u0631\u0646\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u060c \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f \u0686\u06cc\u0632\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u067e\u06cc\u0634 \u0628\u0631\u0648\u062f. \u0628\u0631\u062e\u06cc \u0627\u0632 \u06a9\u0627\u0631\u06a9\u0631\u062f\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u0645\u06cc \u06a9\u0646\u0645 <code>try and catch<\/code>\u0628\u0634\u0631 \u0686\u0631\u0627\u061f \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u062f\u0627\u0631\u0627\u06cc <code>try<\/code> \u0648\u062a <code>catch<\/code>\u0628\u0634\u0631<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0645\u06cc\u0634\u0647 \u0645\u0627 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">SomeFunction<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n        <span class=\"cm\">\/*  *\/<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">next<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648\u0642\u062a\u06cc \u062a\u0645\u0627\u0645 \u0634\u062f \u060c \u0627\u06cc\u0646 \u0627\u062d\u062a\u0645\u0627\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0627 \u067e\u0627\u0633\u062e \u062e\u0637\u0627 \u0645\u0627\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"success\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">false<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"message\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Unauthorized: please format your auth token\"<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0648\u0631\u062f \u062f\u06cc\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06a9\u0647 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u0628\u0631\u062e\u0648\u0631\u062f \u06a9\u0646\u062f. \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0631\u062e\u0648\u0631\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0622\u06cc\u0627 \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc \u0628\u0627 \u062e\u0637\u0627\u06cc \u0645\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u062d\u0633\u0627\u0628 \u0645\u06cc \u0634\u0648\u062f\u061f \u0646\u0647 \u060c \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc \u062e\u0637\u0627\u06cc \u062e\u0637\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062d\u0633\u0627\u0628 \u0646\u0645\u06cc \u0622\u0648\u0631\u062f.<\/p>\n<p>\u062e\u0648\u0628 \u060c \u0627\u06cc\u062f\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a \u060c \u0645\u0627 \u0628\u0647 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06af\u0641\u062a\u06cc\u0645 \u060c <code>GET http:\/\/localhost:3000\/audit<\/code>\u0628\u0634\u0631 \u0645\u0627 \u0647\u0631\u06af\u0632 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc\/\u0645\u0633\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628\u0631\u0633\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u06a9\u0631\u062f\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0627\u06cc \u0627\u0632 \u0645\u06cc\u0627\u0646\u0647 \u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u060c \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u060c \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0644\u0645\u0633 \u0646\u0645\u06cc \u06a9\u0646\u062f \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Express \u0622\u0646 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"cp\"\/>\n<span class=\"nt\"> <span class=\"na\">lang=<\/span><span class=\"s\">\"en\"<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\"\/>\n        <span class=\"nt\"><meta\/> <span class=\"na\">charset=<\/span><span class=\"s\">\"utf-8\"<\/span> <span class=\"nt\">\/&gt;<\/span>\n        <span class=\"nt\"><title\/><\/span>Error<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n        <span class=\"nt\"><pre\/><\/span>Cannot GET \/auditing<span class=\"nt\"\/><\/span><\/span><\/code><\/pre>\n<p>    <span class=\"nt\"\/><br \/>\n<span class=\"nt\"\/><\/p>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Express \u0622\u0646 \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u06a9\u0631\u062f \u0627\u0645\u0627 \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0631\u06af\u0631\u062f\u06cc\u0645 <code>JSON<\/code> \u0646\u0647 <code>html<\/code>\u0628\u0634\u0631 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u060c \u06a9\u0647 \u0641\u0642\u0637 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f \u060c \u0628\u0627\u0632 \u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n<p>\u0628\u0627\u0632 \u0647\u0645 \u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc \u0628\u0627 \u062e\u0637\u0627\u06cc \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"cm\">\/* not found error-handling middleware *\/<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">notFoundHandler<\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"nx\">next<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ anything else<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">404<\/span><span class=\"p\">).<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">success<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Endpoint not found, kindly read our documentation<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u067e\u0633 \u0627\u0632 \u062e\u0637\u0627\u06cc \u062f\u0633\u062a \u0632\u062f\u0646 \u0628\u0647 \u0645\u06cc\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">...<\/span>\n<span class=\"cm\">\/* global error handling *\/<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">errorHandler<\/span><span class=\"p\">);<\/span>\n\n<span class=\"cm\">\/* handle cannot [METHOD] some endpoint *\/<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">notFoundHandler<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">...<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0645\u0627 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 JSON \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>HTTP\/1.1 404 Not Found\nX-Powered-By: Express\nContent-Type: application\/json<span class=\"p\">;<\/span> <span class=\"nv\">charset<\/span><span class=\"o\">=<\/span>utf-8\nContent-Length: 79\nETag: W\/<span class=\"s2\">\"4f-ZeAuDFW\/On8o\/z3qFxGFjcV9e4E\"<\/span>\nDate: Mon, 03 Mar 2025 09:01:58 GMT\nConnection: close\n\n<span class=\"o\">{<\/span>\n  <span class=\"s2\">\"success\"<\/span>: <span class=\"nb\">false<\/span>,\n  <span class=\"s2\">\"message\"<\/span>: <span class=\"s2\">\"Endpoint not found, kindly read our documentation\"<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%86%D8%A7%D8%A8%D8%B9\"><\/span>\n<p>  \u0645\u0646\u0627\u0628\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0645\u06cc\u0627\u0646\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c \u062e\u0637\u0627\u06cc \u062e\u0637 \u0645\u06cc\u0627\u0646\u06cc \u062f\u0631 \u06af\u0632\u06cc\u062f\u0647 \u0642\u0628\u0644\u06cc \u060c \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648 \u0645\u062c\u0648\u0632 \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u060c \u0645\u0627 \u0627\u0632 Joi \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 JSONWeBtoken \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc AUTH \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0627 JWT \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062e\u0648\u062f \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u060c &hellip;<\/p>\n","protected":false},"author":2,"featured_media":100672,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-100671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/100671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=100671"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/100671\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/100672"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=100671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=100671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=100671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}