{"id":82141,"date":"2024-11-01T03:31:24","date_gmt":"2024-11-01T00:01:24","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/"},"modified":"2024-11-01T03:31:24","modified_gmt":"2024-11-01T00:01:24","slug":"the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/","title":{"rendered":"\u0627\u0635\u0648\u0644 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e: \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u062d\u06cc\u0627\u062a\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0627\u0633\u062a. \u062b\u0628\u0627\u062a \u0633\u0631\u0648\u0631\u060c \u062a\u062e\u0635\u06cc\u0635 \u06a9\u0627\u0631\u0622\u0645\u062f \u0645\u0646\u0627\u0628\u0639 \u0648 \u0645\u062d\u0627\u0641\u0638\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062d\u0645\u0644\u0627\u062a \u0645\u062e\u0631\u0628 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0628\u0647 \u0645\u0627\u0647\u06cc\u062a \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e\u060c \u0627\u0647\u0645\u06cc\u062a \u0622\u0646\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 \u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u06cc\u0645. \u0628\u06cc\u0627 \u062f\u0631\u0633\u062a \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645 \ud83d\ude09<\/p>\n<p>  Rate Limiting \u0686\u06cc\u0633\u062a\u061f<\/p>\n<p>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u06cc\u06a9 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u0632\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u06cc\u0627 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0628\u0647 \u06cc\u06a9 \u0648\u0628 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0647 \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u062a\u0636\u0645\u06cc\u0646 \u062a\u0648\u0632\u06cc\u0639 \u0639\u0627\u062f\u0644\u0627\u0646\u0647 \u0645\u0646\u0627\u0628\u0639 \u0648 \u062d\u0641\u0638 \u062b\u0628\u0627\u062a \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0686\u0631\u0627 \u0627\u0632 Rate Limiting \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062f\u0644\u0627\u06cc\u0644\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<p>\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647: \u0631\u0628\u0627\u062a \u0647\u0627 \u06cc\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u062e\u0631\u0628 \u0631\u0627 \u0627\u0632 \u0647\u062c\u0648\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0646\u0627\u0628\u0639: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0646\u0635\u0641\u0627\u0646\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0645\u0646\u06cc\u062a: \u0628\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062d\u0645\u0644\u0627\u062a brute-force \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u06a9\u0646\u062a\u0631\u0644 \u0647\u0632\u06cc\u0646\u0647: \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f API \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0639\u0645\u0644\u06a9\u0631\u062f: \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0631\u0627 \u067e\u0627\u0633\u062e\u06af\u0648 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f \u0648 \u062e\u0637\u0631 \u062e\u0631\u0627\u0628\u06cc \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e<\/p>\n<p>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u067e\u0646\u062c\u0631\u0647 \u062b\u0627\u0628\u062a (\u06cc\u0627 \u0633\u0627\u062f\u0647).: \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646\u06cc \u062b\u0627\u0628\u062a \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c &#8220;100 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u062f\u0642\u06cc\u0642\u0647.&#8221;<\/p>\n<p>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u067e\u0646\u062c\u0631\u0647 \u06a9\u0634\u0648\u06cc\u06cc: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0632\u0645\u0627\u0646\u06cc \u067e\u0648\u06cc\u0627 \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062f\u0648\u0631\u0647 \u0627\u062e\u06cc\u0631\u060c \u0645\u0627\u0646\u0646\u062f \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u06cc\u0627 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0622\u062e\u0631\u060c \u0631\u062f\u06cc\u0627\u0628\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0633\u0637\u0644 \u062a\u0648\u06a9\u0646: \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0632 \u06cc\u06a9 &#8220;\u0633\u0637\u0644&#8221; \u067e\u0631 \u0627\u0632 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u06cc\u06a9 \u0646\u0634\u0627\u0646\u0647 \u0645\u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u0637\u0644 \u062f\u0631 \u0628\u0627\u0632\u0647 \u0647\u0627\u06cc \u0632\u0645\u0627\u0646\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u067e\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0627 \u062d\u0641\u0638 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u06a9\u0644\u06cc\u060c \u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u0628\u0648\u0647 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0633\u0637\u0644 \u0646\u0634\u062a\u06cc: \u0634\u0628\u06cc\u0647 \u0633\u0637\u0644 \u0698\u062a\u0648\u0646 \u0627\u0645\u0627 \u0628\u0627 \u067e\u06cc\u0686 \u0648 \u062a\u0627\u0628. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0633\u0637\u0644 \u067e\u0631 \u0627\u0633\u062a\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc &#8220;\u0646\u0634\u062a&#8221; \u0645\u06cc \u06a9\u0646\u0646\u062f \u06cc\u0627 \u062f\u0648\u0631 \u0631\u06cc\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u062c\u0631\u06cc\u0627\u0646 \u062b\u0627\u0628\u062a\u06cc \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83d\udca1 \u0645\u0646 \u062d\u062a\u06cc \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u062f\u0631\u0648\u063a \u0628\u06af\u0648\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0647\u0627\u06cc Token Bucket \u0648 Leaky Bucket \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0627\u062f\u06cc \u0646\u062f\u0627\u0631\u0645\u060c \u0632\u06cc\u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u0628\u0647 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0627\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u067e\u0646\u062c\u0631\u0647 \u062b\u0627\u0628\u062a \u0648 \u067e\u0646\u062c\u0631\u0647 \u06a9\u0634\u0648\u06cc\u06cc \u0631\u0627\u06cc\u062c \u062a\u0631\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c GPT-4 OpenAI \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u067e\u0646\u062c\u0631\u0647 \u062b\u0627\u0628\u062a \u0628\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f &#8211; \u0627\u0648\u0644\u06cc\u0646 \u0631\u062f\u06cc\u0641 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 500 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u062f\u0642\u06cc\u0642\u0647 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p>  \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e<\/p>\n<p>\u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0627\u0645\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<p>\u0631\u062f\u06cc\u0627\u0628\u06cc: \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u062a\u0639\u062f\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 (\u0628\u06cc\u0634\u062a\u0631 userId) \u06cc\u0627 IP \u062f\u0631 \u06cc\u06a9 \u0628\u0627\u0632\u0647 \u0632\u0645\u0627\u0646\u06cc \u062e\u0627\u0635 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0622\u0633\u062a\u0627\u0646\u0647: \u062a\u0639\u06cc\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a (\u0645\u062b\u0644\u0627\u064b 100 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u0633\u0627\u0639\u062a).<\/p>\n<p>\u067e\u0627\u0633\u062e: \u0627\u0631\u0633\u0627\u0644 \u0627\u062e\u0637\u0627\u0631 \u06cc\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u062c\u0627\u0648\u0632 \u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 (\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 a 429 Too Many Requests \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a HTTP).<\/p>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0646\u0631\u062e \u0645\u062d\u062f\u0648\u062f: \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u062f\u0631\u06a9 \u0627\u0633\u0627\u0633\u06cc \u0627\u0632 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u0648 \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062f\u0633\u062a\u0645\u0627\u0646 \u0631\u0627 \u06a9\u062b\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u0627 \u062f\u0648 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<p>\u0627\u0644\u0641 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<br \/>\n\u0627\u0644\u0641 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/p>\n<p>  \u067e\u0634\u062a\u0647 \u0641\u0646\u0627\u0648\u0631\u06cc<\/p>\n<p>Frontend: React (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Vite)<br \/>\nBackend: Express (\u0686\u0627\u0631\u0686\u0648\u0628 Node.js)<\/p>\n<p>  \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/p>\n<p>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0627 \u0647\u0631 \u0646\u0627\u0645 \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc \u06a9\u062f VS \u06cc\u0627 \u0647\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u062f\u0648 \u067e\u0648\u0634\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0646\u0627\u0645 \u0647\u0627\u06cc frontend \u0648 backend \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c cd \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0647\u0627\u06cc Backend \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f npm init -y \u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 a package.json \u0641\u0627\u06cc\u0644<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc follow npm \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 backend \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<p>npm install express cors express-rate-limit<\/p>\n<p>npm install -D nodemon<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646\u0647\u0627 \u0686\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f:<\/p>\n<p>express: \u0648\u0628 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc API \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>cors: \u0628\u0647 frontend \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0628\u0627 backend \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f<\/p>\n<p>express-rate-limit: \u0627\u0632 API \u0634\u0645\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u0645\u062d\u0627\u0641\u0638\u062a \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>nodemon: \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u062a\u0648\u0633\u0639\u0647 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 D)<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f index.js (\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f) \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u0646\u062f\u0647 \u0646\u0631\u062e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u06a9\u067e\u06cc \u0648 \u067e\u06cc\u0633\u062a \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f<\/p>\n<p>const express = require(&#8220;express&#8221;);<br \/>\nconst rateLimit = require(&#8220;express-rate-limit&#8221;);<\/p>\n<p>const app = express();<\/p>\n<p>\/\/ Set up rate limiter: 100 requests per 15 minutes<br \/>\nconst limiter = rateLimit({<br \/>\n  windowMs: 15 * 60 * 1000, \/\/ 15 minutes<br \/>\n  max: 5, \/\/ Limit each IP to 5 requests per `window` (here, per 15 minutes)<br \/>\n  message: &#8220;Too many requests from this IP, please try again later.&#8221;,<br \/>\n});<\/p>\n<p>\/\/ Apply the rate limiting middleware to all requests<br \/>\napp.use(limiter);<\/p>\n<p>app.get(&#8220;\/api\/data&#8221;, (req, res) =&gt; {<br \/>\n  res.send(&#8220;Welcome to the API!&#8221;);<br \/>\n});<\/p>\n<p>app.listen(5000, () =&gt; {<br \/>\n  console.log(&#8220;Server running on http:\/\/localhost:5000&#8221;);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0628\u062e\u0634 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<p>\u062f\u0648 \u062e\u0637 \u0627\u0648\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0645\u0627 \u0631\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f<\/p>\n<p>app = express()  \u0633\u0631\u0648\u0631 \u0645\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f<br \/>\n\u0631\u0627 limiter \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u0628\u0627:<\/p>\n<p>windowMs: \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646\u06cc 15 \u062f\u0642\u06cc\u0642\u0647 \u0627\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f (15 \u00d7 60 \u00d7 1000 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647)<\/p>\n<p>max: 5 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 \u0622\u062f\u0631\u0633 IP \u062f\u0631 \u0622\u0646 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u0645\u062c\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>message: \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 \u0641\u0631\u0627\u062a\u0631 \u0645\u06cc \u0631\u0648\u0646\u062f \u0645\u06cc \u0628\u06cc\u0646\u0646\u062f<\/p>\n<p>\u0633\u067e\u0633:<\/p>\n<p>app.use(limiter)  \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0645\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u0633\u06cc\u0631\u0647\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n\u0645\u0627 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 &#8216;\/api\/data&#8217; \u06a9\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0648\u0634\u0627\u0645\u062f\u06af\u0648\u06cc\u06cc \u0645\u06cc \u0641\u0631\u0633\u062a\u062f<br \/>\n\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0633\u0631\u0648\u0631 \u0631\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 5000 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u06cc\u0634 \u0627\u0632 100 \u0628\u0627\u0631 \u062f\u0631 \u0645\u062f\u062a 15 \u062f\u0642\u06cc\u0642\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 IP \u0628\u0647 API \u0634\u0645\u0627 \u0636\u0631\u0628\u0647 \u0645\u06cc \u0632\u0646\u0646\u062f\u060c \u0628\u0647 \u062c\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 API\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647\u060c \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u0645 package.json \ud83d\udc47\ud83c\udffd<\/p>\n<p> {<br \/>\n  &#8220;scripts&#8221;: {<br \/>\n    &#8220;dev&#8221;: &#8220;nodemon index.js&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0647\u0645\u0647 \u0628\u0631\u0627\u06cc \u0628\u0627\u0637\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0648\u0642\u062a \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u06cc\u06cc \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062c\u062f\u06cc\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 cd \u0648\u0627\u0631\u062f \u067e\u0648\u0634\u0647 frontend \u0634\u062f\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<p>  npm create vite@latest .<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06af\u0631 \u062a\u0627\u06cc\u067e \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0646\u0645\u06cc \u062f\u0627\u0646\u06cc\u062f\u060c \u0628\u0647 \u0634\u0645\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062e\u0644\u0627\u0635 \u0634\u062f\u0646 \u0627\u0632 \u0634\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u06a9\u0645\u06cc \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u060c \u062f\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f App.jsx \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u067e\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u062f\u0645 \ud83d\udc47\ud83c\udffd<\/p>\n<p>  import { useState } from &#8220;react&#8221;;<br \/>\n  import axios from &#8220;axios&#8221;;<\/p>\n<p>  const App = () =&gt; {<br \/>\n    const [response, setResponse] = useState(null);<br \/>\n    const [error, setError] = useState(null);<\/p>\n<p>    const fetchData = async () =&gt; {<br \/>\n      try {<br \/>\n        setError(null); \/\/ Reset error state before making a request<br \/>\n        const res = await axios.get(&#8220;http:\/\/localhost:5000\/api\/data&#8221;);<br \/>\n        setResponse(res.data.message);<br \/>\n      } catch (err) {<br \/>\n        setError(err.response?.data || &#8220;Error occurred while fetching data&#8221;);<br \/>\n      }<br \/>\n    };<\/p>\n<p>    return (<br \/>\n      &lt;div className=&#8221;App&#8221;&gt;<br \/>\n        &lt;header className=&#8221;App-header&#8221;&gt;<br \/>\n          &lt;h1&gt;Rate Limiting Test with Expressh1&gt;<br \/>\n          &lt;button onClick={fetchData}&gt;Fetch Data from Serverbutton&gt;<br \/>\n          {response &amp;&amp; &lt;p&gt;Server Response: {response}p&gt;}<br \/>\n          {error &amp;&amp; &lt;p style={{ color: &#8220;red&#8221; }}&gt;Error: {error}p&gt;}<br \/>\n        header&gt;<br \/>\n      div&gt;<br \/>\n    );<br \/>\n  };<\/p>\n<p>  export default App;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f:<\/p>\n<p>\u0645\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 useState \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 axios \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc API<br \/>\n\u0645\u0627 \u062f\u0648 \u0645\u062a\u063a\u06cc\u0631 \u062d\u0627\u0644\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>response: \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0645\u0648\u0641\u0642 API \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>error: \u0647\u0631\u06af\u0648\u0646\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>\u0631\u0627 fetchData \u062a\u0627\u0628\u0639:<\/p>\n<p>\u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u062a\u0645\u0627\u0633 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f<br \/>\n\u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 API \u0645\u0627 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u062f<br \/>\n\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06cc\u0627 response \u06cc\u0627 error \u062f\u0648\u0644\u062a<br \/>\n\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f try\/catch \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u0648 \u062e\u0637\u0627\u0647\u0627<\/p>\n<p>UI \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<p>\u06cc\u06a9 \u0639\u0646\u0648\u0627\u0646<br \/>\n\u062f\u06a9\u0645\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627<br \/>\n\u067e\u0627\u0633\u062e API (\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0628\u0648\u062f\u0646)<br \/>\n\u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0637\u0627 \u0628\u0647 \u0631\u0646\u06af \u0642\u0631\u0645\u0632 (\u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a) \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062f\u0631 \u0639\u0631\u0636 15 \u062f\u0642\u06cc\u0642\u0647 \u0628\u0627\u0631\u0647\u0627 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0631\u0627 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0645\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f!<\/p>\n<p>\u0627\u06cc\u0646 \u0647\u0645\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u062b\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET \u0627\u0633\u062a. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0645\u062b\u0627\u0644 \u0628\u0639\u062f\u06cc \u0628\u0631\u0648\u06cc\u0645<\/p>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u06a9\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0648\u0644 \u0631\u0627 \u06a9\u0627\u0645\u0646\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 Paste \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<p>import express from &#8220;express&#8221;;<br \/>\nimport cors from &#8220;cors&#8221;;<br \/>\nimport rateLimit from &#8220;express-rate-limit&#8221;;<br \/>\nimport bodyParser from &#8220;body-parser&#8221;;<\/p>\n<p>const app = express();<\/p>\n<p>app.use(cors());<\/p>\n<p>app.use(bodyParser.json());<\/p>\n<p>const limiter = rateLimit({<br \/>\n  windowMs: 15 * 60 * 1000, \/\/ 15 minutes<br \/>\n  max: 5, \/\/ limit each IP to 100 requests per windowMs<br \/>\n  message: &#8220;Too many requests from this IP, please try again after 15 minutes&#8221;,<br \/>\n});<\/p>\n<p>app.post(&#8220;\/api\/submit-form&#8221;, limiter, (req, res) =&gt; {<br \/>\n  const { name, email, message } = req.body;<\/p>\n<p>  \/\/ Simulate processing form data<br \/>\n  console.log(`Received form submission from ${name} (${email}): ${message}`);<\/p>\n<p>  res.json({ message: &#8220;Form has been submitted successfully!&#8221; });<br \/>\n});<\/p>\n<p>app.listen(5000, () =&gt; console.log(`Listening on port ${5000}`));<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u06a9\u062f\u0647\u0627 \u0628\u0627 \u0645\u062b\u0627\u0644 \u0627\u0648\u0644 \u06cc\u06a9\u0633\u0627\u0646 \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0641\u0642\u0637 \u0686\u0646\u062f \u062a\u0641\u0627\u0648\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<p>\u0627\u0636\u0627\u0641\u0647 \u0634\u062f bodyParser \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645<br \/>\n\u06cc\u06a9 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc POST \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0627\u0631\u0633\u0627\u0644 \u0647\u0627\u06cc \u0641\u0631\u0645 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u06cc\u06cc \u0646\u06cc\u0632 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<\/p>\n<p>import { useState } from &#8220;react&#8221;;<br \/>\nimport axios from &#8220;axios&#8221;;<\/p>\n<p>const App = () =&gt; {<br \/>\n  const [formData, setFormData] = useState({<br \/>\n    name: &#8220;&#8221;,<br \/>\n    email: &#8220;&#8221;,<br \/>\n    message: &#8220;&#8221;,<br \/>\n  });<br \/>\n  const [response, setResponse] = useState(null);<br \/>\n  const [error, setError] = useState(null);<\/p>\n<p>  const handleInputChange = (e) =&gt; {<br \/>\n    const { name, value } = e.target;<br \/>\n    setFormData({ &#8230;formData, [name]: value });<br \/>\n  };<\/p>\n<p>  const handleSubmit = async (e) =&gt; {<br \/>\n    e.preventDefault();<br \/>\n    try {<br \/>\n      setError(null); \/\/ Reset error state before making a request<br \/>\n      const res = await axios.post(<br \/>\n        &#8220;http:\/\/localhost:5000\/api\/submit-form&#8221;,<br \/>\n        formData,<br \/>\n      );<br \/>\n      setResponse(res.data.message);<br \/>\n    } catch (err) {<br \/>\n      setError(<br \/>\n        err.response?.data || &#8220;Error occurred while submitting the form&#8221;,<br \/>\n      );<br \/>\n    }<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;div className=&#8221;App&#8221;&gt;<br \/>\n      &lt;header className=&#8221;App-header&#8221;&gt;<br \/>\n        &lt;h1&gt;Rate Limiting Form Submission with Expressh1&gt;<br \/>\n        &lt;form onSubmit={handleSubmit}&gt;<br \/>\n          &lt;div&gt;<br \/>\n            &lt;label&gt;Name:label&gt;<br \/>\n            &lt;input<br \/>\n              type=&#8221;text&#8221;<br \/>\n              name=&#8221;name&#8221;<br \/>\n              value={formData.name}<br \/>\n              onChange={handleInputChange}<br \/>\n              required<br \/>\n            \/&gt;<br \/>\n          div&gt;<br \/>\n          &lt;div&gt;<br \/>\n            &lt;label&gt;Email:label&gt;<br \/>\n            &lt;input<br \/>\n              type=&#8221;email&#8221;<br \/>\n              name=&#8221;email&#8221;<br \/>\n              value={formData.email}<br \/>\n              onChange={handleInputChange}<br \/>\n              required<br \/>\n            \/&gt;<br \/>\n          div&gt;<br \/>\n          &lt;div&gt;<br \/>\n            &lt;label&gt;Message:label&gt;<br \/>\n            &lt;textarea<br \/>\n              name=&#8221;message&#8221;<br \/>\n              value={formData.message}<br \/>\n              onChange={handleInputChange}<br \/>\n              required<br \/>\n            \/&gt;<br \/>\n          div&gt;<br \/>\n          &lt;button type=&#8221;submit&#8221;&gt;Submitbutton&gt;<br \/>\n        form&gt;<br \/>\n        {response &amp;&amp; (<br \/>\n          &lt;p style={{ color: &#8220;green&#8221; }}&gt;Server Response: {response}p&gt;<br \/>\n        )}<br \/>\n        {error &amp;&amp; &lt;p style={{ color: &#8220;red&#8221; }}&gt;Error: {error}p&gt;}<br \/>\n      header&gt;<br \/>\n    div&gt;<br \/>\n  );<br \/>\n};<\/p>\n<p>export default App;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u0641\u0631\u0645 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc \u062f\u0647\u06cc\u0645. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0628\u0627 \u0645\u062b\u0627\u0644 GET \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a:<\/p>\n<p>\u0627\u0632 \u06cc\u06a9 \u0641\u0631\u0645 \u0628\u0647 \u062c\u0627\u06cc \u06cc\u06a9 \u062f\u06a9\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n\u062d\u0627\u0644\u062a \u0641\u0631\u0645 \u0631\u0627 \u0628\u0627 formData<\/p>\n<p>\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0627 handleInputChange<\/p>\n<p>\u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u0628\u0647 \u062c\u0627\u06cc GET \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n\u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0631\u0627 \u0628\u0647 \u0631\u0646\u06af \u0633\u0628\u0632 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0641\u0631\u0645 \u0628\u0647 5 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631 15 \u062f\u0642\u06cc\u0642\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f &#8211; \u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628 \u0628\u0686\u0647 \u0647\u0627\u060c \u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc \u06af\u0648\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0633\u06cc\u062f\u06cc\u062f \ud83c\udf89. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0627\u06cc\u062f\u0647 \u0627\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0622\u0646 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0627\u06af\u0631 \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af\u062a\u0631\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0633\u062a\u0644\u0632\u0645 \u067e\u0648\u0644 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0633\u0648\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f \u062f\u0631 \u06a9\u0627\u0645\u0646\u062a \u0628\u067e\u0631\u0633\u06cc\u062f. \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9 \ud83e\udd20<\/p>\n<div data-article-id=\"2068296\" id=\"article-body\">\n<p>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u062d\u06cc\u0627\u062a\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0627\u0633\u062a. \u062b\u0628\u0627\u062a \u0633\u0631\u0648\u0631\u060c \u062a\u062e\u0635\u06cc\u0635 \u06a9\u0627\u0631\u0622\u0645\u062f \u0645\u0646\u0627\u0628\u0639 \u0648 \u0645\u062d\u0627\u0641\u0638\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062d\u0645\u0644\u0627\u062a \u0645\u062e\u0631\u0628 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0628\u0647 \u0645\u0627\u0647\u06cc\u062a \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e\u060c \u0627\u0647\u0645\u06cc\u062a \u0622\u0646\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 \u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u06cc\u0645. \u0628\u06cc\u0627 \u062f\u0631\u0633\u062a \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645 \ud83d\ude09<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 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=\"Toggle Table of Content\"><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\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#Rate_Limiting_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >Rate Limiting \u0686\u06cc\u0633\u062a\u061f<\/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\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%DA%86%D8%B1%D8%A7_%D8%A7%D8%B2_Rate_Limiting_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D9%85%D8%9F\" >\u0686\u0631\u0627 \u0627\u0632 Rate Limiting \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/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\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%86%D8%B1%D8%AE\" >\u0627\u0646\u0648\u0627\u0639 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e<\/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\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D9%86%D8%AD%D9%88%D9%87_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF_%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D9%86%D8%B1%D8%AE\" >\u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e<\/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\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%86%D8%B1%D8%AE_%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%D9%85%D8%AB%D8%A7%D9%84_%D9%87%D8%A7%DB%8C_%D8%B9%D9%85%D9%84%DB%8C\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0646\u0631\u062e \u0645\u062d\u062f\u0648\u062f: \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D9%BE%D8%B4%D8%AA%D9%87_%D9%81%D9%86%D8%A7%D9%88%D8%B1%DB%8C\" >\u067e\u0634\u062a\u0647 \u0641\u0646\u0627\u0648\u0631\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_%DA%A9%D9%86%DB%8C%D8%AF_%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA\" >\u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_POST\" >\u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/the-basics-of-rate-limiting-how-it-works-and-how-to-use-it-5ccp\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Rate_Limiting_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  Rate Limiting \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u06cc\u06a9 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u0632\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u06cc\u0627 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0628\u0647 \u06cc\u06a9 \u0648\u0628 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0647 \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u062a\u0636\u0645\u06cc\u0646 \u062a\u0648\u0632\u06cc\u0639 \u0639\u0627\u062f\u0644\u0627\u0646\u0647 \u0645\u0646\u0627\u0628\u0639 \u0648 \u062d\u0641\u0638 \u062b\u0628\u0627\u062a \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%A7%D8%B2_Rate_Limiting_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D9%85%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627 \u0627\u0632 Rate Limiting \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062f\u0644\u0627\u06cc\u0644\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<ul>\n<li>\n<strong>\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/strong>: \u0631\u0628\u0627\u062a \u0647\u0627 \u06cc\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u062e\u0631\u0628 \u0631\u0627 \u0627\u0632 \u0647\u062c\u0648\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0646\u0627\u0628\u0639<\/strong>: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0646\u0635\u0641\u0627\u0646\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u0645\u0646\u06cc\u062a<\/strong>: \u0628\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062d\u0645\u0644\u0627\u062a brute-force \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u06a9\u0646\u062a\u0631\u0644 \u0647\u0632\u06cc\u0646\u0647<\/strong>: \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f API \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0639\u0645\u0644\u06a9\u0631\u062f<\/strong>: \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0631\u0627 \u067e\u0627\u0633\u062e\u06af\u0648 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f \u0648 \u062e\u0637\u0631 \u062e\u0631\u0627\u0628\u06cc \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%86%D8%B1%D8%AE\"><\/span>\n<p>  \u0627\u0646\u0648\u0627\u0639 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\n<strong>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u067e\u0646\u062c\u0631\u0647 \u062b\u0627\u0628\u062a (\u06cc\u0627 \u0633\u0627\u062f\u0647).<\/strong>: \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646\u06cc \u062b\u0627\u0628\u062a \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c &#8220;100 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u062f\u0642\u06cc\u0642\u0647.&#8221;<\/li>\n<li>\n<strong>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u067e\u0646\u062c\u0631\u0647 \u06a9\u0634\u0648\u06cc\u06cc<\/strong>: \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0632\u0645\u0627\u0646\u06cc \u067e\u0648\u06cc\u0627 \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062f\u0648\u0631\u0647 \u0627\u062e\u06cc\u0631\u060c \u0645\u0627\u0646\u0646\u062f \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u06cc\u0627 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0622\u062e\u0631\u060c \u0631\u062f\u06cc\u0627\u0628\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0633\u0637\u0644 \u062a\u0648\u06a9\u0646<\/strong>: \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0632 \u06cc\u06a9 &#8220;\u0633\u0637\u0644&#8221; \u067e\u0631 \u0627\u0632 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u06cc\u06a9 \u0646\u0634\u0627\u0646\u0647 \u0645\u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u0637\u0644 \u062f\u0631 \u0628\u0627\u0632\u0647 \u0647\u0627\u06cc \u0632\u0645\u0627\u0646\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u067e\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0627 \u062d\u0641\u0638 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u06a9\u0644\u06cc\u060c \u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u0628\u0648\u0647 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0633\u0637\u0644 \u0646\u0634\u062a\u06cc<\/strong>: \u0634\u0628\u06cc\u0647 \u0633\u0637\u0644 \u0698\u062a\u0648\u0646 \u0627\u0645\u0627 \u0628\u0627 \u067e\u06cc\u0686 \u0648 \u062a\u0627\u0628. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0633\u0637\u0644 \u067e\u0631 \u0627\u0633\u062a\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc &#8220;\u0646\u0634\u062a&#8221; \u0645\u06cc \u06a9\u0646\u0646\u062f \u06cc\u0627 \u062f\u0648\u0631 \u0631\u06cc\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u062c\u0631\u06cc\u0627\u0646 \u062b\u0627\u0628\u062a\u06cc \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n<\/ol>\n<p>\ud83d\udca1 <em>\u0645\u0646 \u062d\u062a\u06cc \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u062f\u0631\u0648\u063a \u0628\u06af\u0648\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0647\u0627\u06cc Token Bucket \u0648 Leaky Bucket \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0627\u062f\u06cc \u0646\u062f\u0627\u0631\u0645\u060c \u0632\u06cc\u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u0628\u0647 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0627\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u067e\u0646\u062c\u0631\u0647 \u062b\u0627\u0628\u062a \u0648 \u067e\u0646\u062c\u0631\u0647 \u06a9\u0634\u0648\u06cc\u06cc \u0631\u0627\u06cc\u062c \u062a\u0631\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c GPT-4 OpenAI \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u067e\u0646\u062c\u0631\u0647 \u062b\u0627\u0628\u062a \u0628\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f &#8211; \u0627\u0648\u0644\u06cc\u0646 \u0631\u062f\u06cc\u0641 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 500 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u062f\u0642\u06cc\u0642\u0647 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/em><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AD%D9%88%D9%87_%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF_%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D9%86%D8%B1%D8%AE\"><\/span>\n<p>  \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0627\u0645\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\n<strong>\u0631\u062f\u06cc\u0627\u0628\u06cc<\/strong>: \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u062a\u0639\u062f\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 (\u0628\u06cc\u0634\u062a\u0631 userId) \u06cc\u0627 IP \u062f\u0631 \u06cc\u06a9 \u0628\u0627\u0632\u0647 \u0632\u0645\u0627\u0646\u06cc \u062e\u0627\u0635 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li>\n<strong>\u0622\u0633\u062a\u0627\u0646\u0647<\/strong>: \u062a\u0639\u06cc\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a (\u0645\u062b\u0644\u0627\u064b 100 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u0633\u0627\u0639\u062a).<\/li>\n<li>\n<strong>\u067e\u0627\u0633\u062e<\/strong>: \u0627\u0631\u0633\u0627\u0644 \u0627\u062e\u0637\u0627\u0631 \u06cc\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u062c\u0627\u0648\u0632 \u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 (\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 a <code>429 Too Many Requests<\/code> \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a HTTP).<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%86%D8%B1%D8%AE_%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%D9%85%D8%AB%D8%A7%D9%84_%D9%87%D8%A7%DB%8C_%D8%B9%D9%85%D9%84%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0646\u0631\u062e \u0645\u062d\u062f\u0648\u062f: \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u062f\u0631\u06a9 \u0627\u0633\u0627\u0633\u06cc \u0627\u0632 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u0648 \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0646 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062f\u0633\u062a\u0645\u0627\u0646 \u0631\u0627 \u06a9\u062b\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u0627 \u062f\u0648 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ol>\n<li>\u0627\u0644\u0641 <strong>\u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/strong> \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/li>\n<li>\u0627\u0644\u0641 <strong>\u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/strong> \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%B4%D8%AA%D9%87_%D9%81%D9%86%D8%A7%D9%88%D8%B1%DB%8C\"><\/span>\n<p>  \u067e\u0634\u062a\u0647 \u0641\u0646\u0627\u0648\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Frontend: React (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Vite)<\/li>\n<li>Backend: Express (\u0686\u0627\u0631\u0686\u0648\u0628 Node.js)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_%DA%A9%D9%86%DB%8C%D8%AF_%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  <strong>\u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/strong> \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0627 \u0647\u0631 \u0646\u0627\u0645 \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc \u06a9\u062f VS \u06cc\u0627 \u0647\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u062f\u0648 \u067e\u0648\u0634\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0646\u0627\u0645 \u0647\u0627\u06cc frontend \u0648 backend \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c cd \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0647\u0627\u06cc Backend \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f <code>npm init -y<\/code> \u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 a <code>package.json<\/code> \u0641\u0627\u06cc\u0644<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc follow npm \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 backend \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight powershell\"><code><span class=\"n\">npm<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">express<\/span><span class=\"w\"> <\/span><span class=\"nx\">cors<\/span><span class=\"w\"> <\/span><span class=\"nx\">express-rate-limit<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">npm<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nt\">-D<\/span><span class=\"w\"> <\/span><span class=\"nx\">nodemon<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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\u0647\u0627 \u0686\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f:<\/p>\n<ul>\n<li>\n<code>express<\/code>: \u0648\u0628 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc API \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\n<code>cors<\/code>: \u0628\u0647 frontend \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0628\u0627 backend \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f<\/li>\n<li>\n<code>express-rate-limit<\/code>: \u0627\u0632 API \u0634\u0645\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u0645\u062d\u0627\u0641\u0638\u062a \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\n<code>nodemon<\/code>: \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u062a\u0648\u0633\u0639\u0647 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>D<\/code>)<\/li>\n<\/ul>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>index.js<\/code> (\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f) \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u0646\u062f\u0647 \u0646\u0631\u062e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u06a9\u067e\u06cc \u0648 \u067e\u06cc\u0633\u062a \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">express<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">rateLimit<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">express-rate-limit<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ Set up rate limiter: 100 requests per 15 minutes<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">limiter<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">rateLimit<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">windowMs<\/span><span class=\"p\">:<\/span> <span class=\"mi\">15<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ 15 minutes<\/span>\n  <span class=\"na\">max<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ Limit each IP to 5 requests per `window` (here, per 15 minutes)<\/span>\n  <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Too many requests from this IP, please try again later.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Apply the rate limiting middleware to all requests<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">limiter<\/span><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\">\/api\/data<\/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=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Welcome to the API!<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"mi\">5000<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Server running on http:\/\/localhost:5000<\/span><span class=\"dl\">\"<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0628\u062e\u0634 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ol>\n<li>\u062f\u0648 \u062e\u0637 \u0627\u0648\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0645\u0627 \u0631\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f<\/li>\n<li>\n<code>app = express()<\/code>  \u0633\u0631\u0648\u0631 \u0645\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u0631\u0627 <code>limiter<\/code> \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u0628\u0627:\n<ul>\n<li>\n<code>windowMs<\/code>: \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646\u06cc 15 \u062f\u0642\u06cc\u0642\u0647 \u0627\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f (15 \u00d7 60 \u00d7 1000 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647)<\/li>\n<li>\n<code>max<\/code>: 5 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 \u0622\u062f\u0631\u0633 IP \u062f\u0631 \u0622\u0646 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u0645\u062c\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\n<code>message<\/code>: \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 \u0641\u0631\u0627\u062a\u0631 \u0645\u06cc \u0631\u0648\u0646\u062f \u0645\u06cc \u0628\u06cc\u0646\u0646\u062f<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u0633\u067e\u0633:<\/p>\n<ol>\n<li>\n<code>app.use(limiter)<\/code>  \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0645\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u0633\u06cc\u0631\u0647\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u0645\u0627 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>'\/api\/data'<\/code> \u06a9\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0648\u0634\u0627\u0645\u062f\u06af\u0648\u06cc\u06cc \u0645\u06cc \u0641\u0631\u0633\u062a\u062f<\/li>\n<li>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0633\u0631\u0648\u0631 \u0631\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 5000 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/li>\n<\/ol>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u06cc\u0634 \u0627\u0632 100 \u0628\u0627\u0631 \u062f\u0631 \u0645\u062f\u062a 15 \u062f\u0642\u06cc\u0642\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 IP \u0628\u0647 API \u0634\u0645\u0627 \u0636\u0631\u0628\u0647 \u0645\u06cc \u0632\u0646\u0646\u062f\u060c \u0628\u0647 \u062c\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 API\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647\u060c \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u0645 <code>package.json<\/code> \ud83d\udc47\ud83c\udffd<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code> <span class=\"p\">{<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">scripts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">dev<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">nodemon index.js<\/span><span class=\"dl\">\"<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u0647\u0645\u0647 \u0628\u0631\u0627\u06cc \u0628\u0627\u0637\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0648\u0642\u062a \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u06cc\u06cc \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<ul>\n<li>\u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062c\u062f\u06cc\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 <code>cd<\/code> \u0648\u0627\u0631\u062f \u067e\u0648\u0634\u0647 frontend \u0634\u062f\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight powershell\"><code><span class=\"w\">  <\/span><span class=\"n\">npm<\/span><span class=\"w\"> <\/span><span class=\"nx\">create<\/span><span class=\"w\"> <\/span><span class=\"nx\">vite<\/span><span class=\"err\">@<\/span><span class=\"nx\">latest<\/span><span class=\"w\"> <\/span><span class=\"o\">.<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06af\u0631 \u062a\u0627\u06cc\u067e \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0646\u0645\u06cc \u062f\u0627\u0646\u06cc\u062f\u060c \u0628\u0647 \u0634\u0645\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062e\u0644\u0627\u0635 \u0634\u062f\u0646 \u0627\u0632 \u0634\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u06a9\u0645\u06cc \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>\u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u060c \u062f\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f <code>App.jsx<\/code> \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u067e\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u062f\u0645 \ud83d\udc47\ud83c\udffd\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code>  <span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useState<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n  <span class=\"k\">import<\/span> <span class=\"nx\">axios<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">axios<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">App<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">response<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setResponse<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">error<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setError<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">fetchData<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nf\">setError<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Reset error state before making a request<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">res<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">axios<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">http:\/\/localhost:5000\/api\/data<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"nf\">setResponse<\/span><span class=\"p\">(<\/span><span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nf\">setError<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">.<\/span><span class=\"nx\">response<\/span><span class=\"p\">?.<\/span><span class=\"nx\">data<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Error occurred while fetching data<\/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=\"p\">(<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"App\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">header<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"App-header\"<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>Rate Limiting Test with Express<span class=\"p\"\/><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">fetchData<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Fetch Data from Server<span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"si\">{<\/span><span class=\"nx\">response<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>Server Response: <span class=\"si\">{<\/span><span class=\"nx\">response<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">}<\/span>\n          <span class=\"si\">{<\/span><span class=\"nx\">error<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span> <span class=\"na\">style<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">{<\/span> <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">red<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">}<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Error: <span class=\"si\">{<\/span><span class=\"nx\">error<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\"\/><span class=\"nt\">header<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">App<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u0627\u06cc\u0646\u062c\u0627 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f:<\/p>\n<ol>\n<li>\u0645\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>useState<\/code> \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 <code>axios<\/code> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc API<\/li>\n<li>\u0645\u0627 \u062f\u0648 \u0645\u062a\u063a\u06cc\u0631 \u062d\u0627\u0644\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645:\n<ul>\n<li>\n<code>response<\/code>: \u067e\u0627\u0633\u062e \u0647\u0627\u06cc \u0645\u0648\u0641\u0642 API \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\n<code>error<\/code>: \u0647\u0631\u06af\u0648\u0646\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<\/ul>\n<\/li>\n<li>\u0631\u0627 <code>fetchData<\/code> \u062a\u0627\u0628\u0639:\n<ul>\n<li>\u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u062a\u0645\u0627\u0633 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<li>\u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 API \u0645\u0627 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06cc\u0627 <code>response<\/code> \u06cc\u0627 <code>error<\/code> \u062f\u0648\u0644\u062a<\/li>\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>try\/catch<\/code> \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u0648 \u062e\u0637\u0627\u0647\u0627<\/li>\n<\/ul>\n<\/li>\n<li>UI \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:\n<ul>\n<li>\u06cc\u06a9 \u0639\u0646\u0648\u0627\u0646<\/li>\n<li>\u062f\u06a9\u0645\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627<\/li>\n<li>\u067e\u0627\u0633\u062e API (\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0628\u0648\u062f\u0646)<\/li>\n<li>\u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0637\u0627 \u0628\u0647 \u0631\u0646\u06af \u0642\u0631\u0645\u0632 (\u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a) \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062f\u0631 \u0639\u0631\u0636 15 \u062f\u0642\u06cc\u0642\u0647 \u0628\u0627\u0631\u0647\u0627 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0631\u0627 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0645\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f!<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u0627\u06cc\u0646 \u0647\u0645\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u062b\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET \u0627\u0633\u062a. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0645\u062b\u0627\u0644 \u0628\u0639\u062f\u06cc \u0628\u0631\u0648\u06cc\u0645<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_POST\"><\/span>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u06a9\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0648\u0644 \u0631\u0627 \u06a9\u0627\u0645\u0646\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 Paste \u06a9\u0646\u06cc\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">express<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">express<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">cors<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">cors<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">rateLimit<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">express-rate-limit<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">bodyParser<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">body-parser<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nf\">cors<\/span><span class=\"p\">());<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">bodyParser<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">());<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">limiter<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">rateLimit<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">windowMs<\/span><span class=\"p\">:<\/span> <span class=\"mi\">15<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ 15 minutes<\/span>\n  <span class=\"na\">max<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ limit each IP to 100 requests per windowMs<\/span>\n  <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Too many requests from this IP, please try again after 15 minutes<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/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\">\/api\/submit-form<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">limiter<\/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=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">email<\/span><span class=\"p\">,<\/span> <span class=\"nx\">message<\/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=\"c1\">\/\/ Simulate processing form data<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Received form submission from <\/span><span class=\"p\">${<\/span><span class=\"nx\">name<\/span><span class=\"p\">}<\/span><span class=\"s2\"> (<\/span><span class=\"p\">${<\/span><span class=\"nx\">email<\/span><span class=\"p\">}<\/span><span class=\"s2\">): <\/span><span class=\"p\">${<\/span><span class=\"nx\">message<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span> <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Form has been submitted successfully!<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"mi\">5000<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Listening on port <\/span><span class=\"p\">${<\/span><span class=\"mi\">5000<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u062b\u0631 \u06a9\u062f\u0647\u0627 \u0628\u0627 \u0645\u062b\u0627\u0644 \u0627\u0648\u0644 \u06cc\u06a9\u0633\u0627\u0646 \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0641\u0642\u0637 \u0686\u0646\u062f \u062a\u0641\u0627\u0648\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \ud83d\udc47\ud83c\udffd<\/p>\n<ul>\n<li>\u0627\u0636\u0627\u0641\u0647 \u0634\u062f <code>bodyParser<\/code> \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645<\/li>\n<li>\u06cc\u06a9 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc POST \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0627\u0631\u0633\u0627\u0644 \u0647\u0627\u06cc \u0641\u0631\u0645 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<\/ul>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u06cc\u06cc \u0646\u06cc\u0632 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useState<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">axios<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">axios<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">App<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">formData<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setFormData<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">email<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">message<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">});<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">response<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setResponse<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">error<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setError<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleInputChange<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">;<\/span>\n    <span class=\"nf\">setFormData<\/span><span class=\"p\">({<\/span> <span class=\"p\">...<\/span><span class=\"nx\">formData<\/span><span class=\"p\">,<\/span> <span class=\"p\">[<\/span><span class=\"nx\">name<\/span><span class=\"p\">]:<\/span> <span class=\"nx\">value<\/span> <span class=\"p\">});<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleSubmit<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nf\">preventDefault<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nf\">setError<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Reset error state before making a request<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">res<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">axios<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span>\n        <span class=\"dl\">\"<\/span><span class=\"s2\">http:\/\/localhost:5000\/api\/submit-form<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"nx\">formData<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">);<\/span>\n      <span class=\"nf\">setResponse<\/span><span class=\"p\">(<\/span><span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nf\">setError<\/span><span class=\"p\">(<\/span>\n        <span class=\"nx\">err<\/span><span class=\"p\">.<\/span><span class=\"nx\">response<\/span><span class=\"p\">?.<\/span><span class=\"nx\">data<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Error occurred while submitting the form<\/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\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"App\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">header<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"App-header\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>Rate Limiting Form Submission with Express<span class=\"p\"\/><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">onSubmit<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleSubmit<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>Name:<span class=\"p\"\/><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span>\n              <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"text\"<\/span>\n              <span class=\"na\">name<\/span><span class=\"p\">=<\/span><span class=\"s\">\"name\"<\/span>\n              <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formData<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleInputChange<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">required<\/span>\n            <span class=\"p\">\/&gt;<\/span>\n          <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>Email:<span class=\"p\"\/><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span>\n              <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"email\"<\/span>\n              <span class=\"na\">name<\/span><span class=\"p\">=<\/span><span class=\"s\">\"email\"<\/span>\n              <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formData<\/span><span class=\"p\">.<\/span><span class=\"nx\">email<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleInputChange<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">required<\/span>\n            <span class=\"p\">\/&gt;<\/span>\n          <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>Message:<span class=\"p\"\/><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">textarea<\/span>\n              <span class=\"na\">name<\/span><span class=\"p\">=<\/span><span class=\"s\">\"message\"<\/span>\n              <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formData<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleInputChange<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">required<\/span>\n            <span class=\"p\">\/&gt;<\/span>\n          <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"submit\"<\/span><span class=\"p\">&gt;<\/span>Submit<span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"si\">{<\/span><span class=\"nx\">response<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">(<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span> <span class=\"na\">style<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">{<\/span> <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">green<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">}<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Server Response: <span class=\"si\">{<\/span><span class=\"nx\">response<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n        <span class=\"si\">{<\/span><span class=\"nx\">error<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span> <span class=\"na\">style<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">{<\/span> <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">red<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">}<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>Error: <span class=\"si\">{<\/span><span class=\"nx\">error<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\"\/><span class=\"nt\">header<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">App<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u0641\u0631\u0645 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc \u062f\u0647\u06cc\u0645. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0628\u0627 \u0645\u062b\u0627\u0644 GET \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\u0627\u0632 \u06cc\u06a9 \u0641\u0631\u0645 \u0628\u0647 \u062c\u0627\u06cc \u06cc\u06a9 \u062f\u06a9\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u062d\u0627\u0644\u062a \u0641\u0631\u0645 \u0631\u0627 \u0628\u0627 <code>formData<\/code>\n<\/li>\n<li>\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0627 <code>handleInputChange<\/code>\n<\/li>\n<li>\u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u0628\u0647 \u062c\u0627\u06cc GET \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0631\u0627 \u0628\u0647 \u0631\u0646\u06af \u0633\u0628\u0632 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f<\/li>\n<\/ol>\n<p>\u0627\u06cc\u0646 \u0641\u0631\u0645 \u0628\u0647 5 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631 15 \u062f\u0642\u06cc\u0642\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f &#8211; \u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628 \u0628\u0686\u0647 \u0647\u0627\u060c \u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc \u06af\u0648\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0633\u06cc\u062f\u06cc\u062f \ud83c\udf89. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0627\u06cc\u062f\u0647 \u0627\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0622\u0646 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0627\u06af\u0631 \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af\u062a\u0631\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0633\u062a\u0644\u0632\u0645 \u067e\u0648\u0644 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0633\u0648\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f \u062f\u0631 \u06a9\u0627\u0645\u0646\u062a \u0628\u067e\u0631\u0633\u06cc\u062f. \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9 \ud83e\udd20<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0631\u062e \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u062d\u06cc\u0627\u062a\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0627\u0633\u062a. \u062b\u0628\u0627\u062a \u0633\u0631\u0648\u0631\u060c \u062a\u062e\u0635\u06cc\u0635 \u06a9\u0627\u0631\u0622\u0645\u062f \u0645\u0646\u0627\u0628\u0639 \u0648 \u0645\u062d\u0627\u0641\u0638\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062d\u0645\u0644\u0627\u062a \u0645\u062e\u0631\u0628 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0628\u0647 \u0645\u0627\u0647\u06cc\u062a \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e\u060c \u0627\u0647\u0645\u06cc\u062a \u0622\u0646\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":82142,"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-82141","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\/82141","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=82141"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82141\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/82142"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=82141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=82141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=82141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}