{"id":28492,"date":"2023-06-28T23:51:32","date_gmt":"2023-06-28T20:21:32","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/hateoas-principle-generating-full-paths-for-objects-in-django-rest-framework-366j\/"},"modified":"2023-06-28T23:51:32","modified_gmt":"2023-06-28T20:21:32","slug":"hateoas-principle-generating-full-paths-for-objects-in-django-rest-framework-366j","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/hateoas-principle-generating-full-paths-for-objects-in-django-rest-framework-366j\/","title":{"rendered":"\u0627\u0635\u0644 HATEOAS &#8211; \u0627\u06cc\u062c\u0627\u062f \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627 \u062f\u0631 \u0686\u0627\u0631\u0686\u0648\u0628 \u0627\u0633\u062a\u0631\u0627\u062d\u062a \u062c\u0646\u06af\u0648."},"content":{"rendered":"<div data-article-id=\"1518394\" id=\"article-body\">\n<p><strong>\u067e\u06cc\u0634\u06cc\u0646\u0647 \u062f\u0627\u0633\u062a\u0627\u0646:<\/strong> Pssft &#8211; \u0644\u0637\u0641\u0627 \u0646\u0632\u062f\u06cc\u06a9\u062a\u0631 \u0634\u0648\u06cc\u062f.<br \/>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u06af\u0631\u0648\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062e\u0627\u0635 WhatsApp \u0647\u0633\u062a\u0645\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u062c\u0641\u062a\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u062a\u0631\u06cc\u0646 \u0622\u0646\u0647\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f &#8211; \u0627\u0632 \u0641\u0631\u0635\u062a \u0647\u0627\u06cc \u0634\u063a\u0644\u06cc \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627.<br \/>\u062f\u0631 \u06cc\u06a9 \u0631\u0648\u0632 \u0646\u0641\u0631\u06cc\u0646 \u0634\u062f\u0647\u060c \u067e\u06cc\u0648\u0646\u062f\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u06cc\u0648\u0646\u062f \u0628\u0647 \u06cc\u06a9 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u062a\u0648\u0633\u0637 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a \u0628\u0648\u062f\u060c \u0639\u0646\u0648\u0627\u0646 \u0622\u0646 &#8220;RESTful web API design&#8221; \u0628\u0648\u062f.  \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u06a9\u0627\u0645\u0644 \u0628\u062e\u0648\u0627\u0646\u0645 \u0648 \u0628\u0627 \u0645\u0641\u0647\u0648\u0645\u06cc \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 &#8220;HATEOAS&#8221; \u0627\u0633\u062a (\u0633\u0631\u062f \u0634\u0648! \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647).  \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u0642\u0633\u0645 \u0628\u062e\u0648\u0631\u0645 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0622\u0646 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u062f\u06cc\u062f\u0647\u200c\u0627\u0645\u060c \u0627\u0645\u0627 \u062a\u0627 \u06a9\u0646\u0648\u0646 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u0622\u0646 \u0641\u06a9\u0631 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u0645.  \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u062c\u0644\u0648\u060c \u0622\u0646 \u0631\u0627 \u06af\u0632\u06af\u0632 \u0645\u0646 \u061b) \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Django Rest Framework (DRF) \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u0645 \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647.<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212; \u0627\u0645\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f HATEOAS \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u0645 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a:<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 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\/hateoas-principle-generating-full-paths-for-objects-in-django-rest-framework-366j\/#%D8%A7%D8%B5%D9%84_HATEOAS_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\u0627\u0635\u0644 HATEOAS \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\/hateoas-principle-generating-full-paths-for-objects-in-django-rest-framework-366j\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%BE%D8%A7%DB%8C%D9%87_%D8%AF%D8%B1_DRF\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u0647 \u062f\u0631 DRF<\/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\/hateoas-principle-generating-full-paths-for-objects-in-django-rest-framework-366j\/#%D8%A2%DB%8C%D8%A7_%D9%85%D8%A7_%D9%88%D8%A7%D9%82%D8%B9%D8%A7%D9%8B_%D8%A8%D9%87_HATEOAS_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B1%DB%8C%D9%85%D8%9F\" >\u0622\u06cc\u0627 \u0645\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 HATEOAS \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B5%D9%84_HATEOAS_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  \u0627\u0635\u0644 HATEOAS \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>HATEOAS (Hypermedia \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0648\u062a\u0648\u0631 \u062d\u0627\u0644\u062a \u0628\u0631\u0646\u0627\u0645\u0647) \u06cc\u06a9 \u0627\u0635\u0644 \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc API \u0627\u0633\u062a \u06a9\u0647 \u0647\u062f\u0641 \u0622\u0646 \u06a9\u0634\u0641 \u0628\u06cc\u0634\u062a\u0631 \u0648 \u062a\u0648\u0635\u06cc\u0641\u06cc \u062a\u0631 API \u0647\u0627 \u0627\u0633\u062a.  \u062f\u0631 \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0639\u0628\u0627\u0631\u062a\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u067e\u0627\u0633\u062e API \u0628\u0627\u06cc\u062f \u0634\u0627\u0645\u0644 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u06cc\u0627 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u0631\u062a\u0628\u0637 \u0648 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0642\u0627\u0628\u0644 \u0627\u0646\u062c\u0627\u0645 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u062f\u0631 \u062d\u0627\u0644 \u0645\u0631\u0648\u0631 \u06cc\u06a9 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0647\u0633\u062a\u06cc\u062f \u0648 \u0628\u0627 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0645\u062d\u0635\u0648\u0644 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc \u0634\u0648\u06cc\u062f.  \u062f\u0631 \u0622\u0646 \u0635\u0641\u062d\u0647\u060c \u0646\u0647 \u062a\u0646\u0647\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f\u060c \u0628\u0644\u06a9\u0647 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0628\u0647 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0645\u0631\u062a\u0628\u0637 \u0645\u0627\u0646\u0646\u062f \u00ab\u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647 \u0633\u0628\u062f \u062e\u0631\u06cc\u062f\u00bb\u060c \u00ab\u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0638\u0631\u0627\u062a\u00bb \u06cc\u0627 \u00ab\u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0645\u0634\u0627\u0628\u0647\u00bb \u0631\u0627 \u0646\u06cc\u0632 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u0631\u0627\u0647\u06cc \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u0646\u062f \u062a\u0627 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0627\u062e\u062a \u062f\u0633\u062a\u06cc URL \u06cc\u0627 \u062f\u0627\u0646\u0633\u062a\u0646 \u06a9\u0644 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0627\u0632 \u0642\u0628\u0644\u060c \u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u062d\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>HATEOAS \u0647\u0645\u06cc\u0646 \u0645\u0641\u0647\u0648\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc API \u0647\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0647 \u062c\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0641\u0642\u0637 \u062f\u0627\u062f\u0647 \u062f\u0631 \u06cc\u06a9 \u067e\u0627\u0633\u062e API\u060c \u067e\u0627\u0633\u062e \u0647\u0645\u0686\u0646\u06cc\u0646 \u062d\u0627\u0648\u06cc \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u06cc\u0627 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u06cc\u0627 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 API \u0648 \u06a9\u0634\u0641 \u0633\u0627\u06cc\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u062a\u0628\u0637 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u06a9\u0646\u0646\u062f.  \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062e\u0627\u0635 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u0633\u062e \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0627\u0645\u0644 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0646\u0645\u0627\u06cc\u0647\u060c \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u06cc\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062f\u0646\u0628\u0627\u0644\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646\u0634 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0628\u0627 \u06af\u0646\u062c\u0627\u0646\u062f\u0646 \u0627\u06cc\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u062f\u0631 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc API\u060c \u0645\u0634\u062a\u0631\u06cc\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0632 API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0628\u0627 API \u062d\u0631\u06a9\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u0622\u0646 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.  \u0622\u0646\u0647\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u06a9\u06cc\u0647 \u0628\u0631 \u062f\u0627\u0646\u0634 \u0642\u0628\u0644\u06cc \u06cc\u0627 URL \u0647\u0627\u06cc \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0633\u062e\u062a \u0646\u062f\u0627\u0631\u0646\u062f\u060c \u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 API \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u06cc\u0627 \u0627\u0646\u062c\u0627\u0645 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647\u060c HATEOAS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API \u0631\u0627 \u0628\u0627 \u06af\u0646\u062c\u0627\u0646\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u06cc\u0627 \u0645\u0631\u0627\u062c\u0639 \u062f\u0631 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc API \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0647 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627\u062a\u0631 \u0628\u0627 API \u062d\u0631\u06a9\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u0622\u0646 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062f\u0627\u0646\u0634 \u0642\u0628\u0644\u06cc \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u062a\u0631 \u06a9\u0634\u0641 \u06a9\u0646\u0646\u062f.<\/p>\n<p><strong>\u0635\u062d\u0628\u062a \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u067e\u0627\u0633\u062e HATEOAS \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/strong><\/p>\n<p><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u0627 \u067e\u0627\u0633\u062e\u06cc \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u06a9\u062a\u0627\u0628 \u062f\u0627\u0631\u06cc\u0645.  \u067e\u0627\u0633\u062e \u0634\u0627\u0645\u0644 \u0634\u0646\u0627\u0633\u0647 \u06a9\u062a\u0627\u0628\u060c \u0639\u0646\u0648\u0627\u0646 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0627\u0633\u062a.  \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0634\u06cc \u062a\u0648\u062f\u0631\u062a\u0648\u060c \u0634\u0627\u0645\u0644 \u0634\u0646\u0627\u0633\u0647 \u0648 \u0646\u0627\u0645 \u0622\u0646\u0647\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0647\u0645 \u06a9\u062a\u0627\u0628 \u0648 \u0647\u0645 \u0627\u0634\u06cc\u0627\u0621 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0641\u06cc\u0644\u062f &#8220;\u067e\u06cc\u0648\u0646\u062f\u0647\u0627&#8221; \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0641\u06cc\u0644\u062f &#8220;\u067e\u06cc\u0648\u0646\u062f\u0647\u0627&#8221; \u062f\u0631 \u0634\u06cc\u0621 \u06a9\u062a\u0627\u0628\u060c \u0627\u0631\u062c\u0627\u0639\u0627\u062a\u06cc \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0648 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0645\u0631\u062a\u0628\u0637 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f:<\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u0645\u0634\u0627\u0628\u0647\u060c \u0641\u06cc\u0644\u062f &#8220;\u067e\u06cc\u0648\u0646\u062f\u0647\u0627&#8221; \u062f\u0631 \u0634\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u067e\u06cc\u0648\u0646\u062f &#8220;\u062e\u0648\u062f&#8221; \u0627\u0633\u062a \u06a9\u0647 \u0646\u0634\u0627\u0646\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0645\u0646\u0628\u0639 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f: &#8220;https:\/\/api.example.com\/authors\/1&#8221;.<\/p>\n<p>\u0627\u06cc\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u0628\u0647 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 URL \u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0627\u062e\u062a \u062f\u0633\u062a\u06cc \u0622\u0646\u0647\u0627 \u06cc\u0627 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u0646\u0634 \u0642\u0628\u0644\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 API\u060c \u062f\u0631 API \u062d\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f.  \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u062f\u0631 \u067e\u0627\u0633\u062e API \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u0631\u062a\u0628\u0637 \u0645\u0627\u0646\u0646\u062f \u0628\u0631\u0631\u0633\u06cc \u0647\u0627 \u06cc\u0627 \u06cc\u0627\u0641\u062a\u0646 \u06a9\u062a\u0627\u0628 \u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f.<\/p>\n<hr\/>\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%BE%D8%A7%DB%8C%D9%87_%D8%AF%D8%B1_DRF\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u0647 \u062f\u0631 DRF<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0633\u0631\u06cc\u0639 \u0648 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0631\u0648\u0698\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u0628\u0627\u0634\u062f.<\/p>\n<p>\u0645\u0646 \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u0634\u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u062f\u0631 python\u060c Django \u0648 REST \u062f\u0627\u0646\u0634 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0647\u0645\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0646\u0627\u062e\u0648\u0634\u0627\u06cc\u0646\u062f \u0635\u062d\u0628\u062a \u0646\u0645\u06cc\u200c\u06a9\u0646\u0645\u060c \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 HATEOAS \u0686\u06cc\u0633\u062a &#8211; \u06a9\u0647 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0647\u0627\u06cc\u067e\u0631 \u0631\u0633\u0627\u0646\u0647 \u06cc\u0627 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0628\u0647 \u067e\u0627\u0633\u062e json API \u062e\u0648\u062f \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0645\u0646 \u06cc\u06a9 \u0631\u0648\u0634 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0686\u0646\u06cc\u0646 \u067e\u06cc\u0648\u0646\u062f \/ \u0645\u0633\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f.<\/p>\n<p>\u0627\u0644\u0632\u0627\u0645\u0627\u062a:<\/p>\n<p>&#8211; \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc (\u0628\u0631\u0627\u06cc \u0648\u06cc\u0646\u062f\u0648\u0632):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nv\">$&gt;<\/span> <span class=\"nb\">cd <\/span>project_folder\n\n<span class=\"nv\">$&gt;<\/span> pip <span class=\"nb\">install <\/span>virtualenv\n\n<span class=\"nv\">$&gt;<\/span> python <span class=\"nt\">-m<\/span> venv venv\n\n<span class=\"nv\">$&gt;<\/span> .<span class=\"se\">\\v<\/span><span class=\"nb\">env<\/span><span class=\"se\">\\S<\/span>cripts<span class=\"se\">\\a<\/span>ctivate\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>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u0646\u06af\u0648:<br \/>\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u0646\u06af\u0648 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   pip <span class=\"nb\">install <\/span>django\n\n   pip <span class=\"nb\">install <\/span>djangorestframework\n\n   django-admin startproject library_project\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>\u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0646\u06af\u0648 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<br \/>\u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0628\u0631\u0648\u06cc\u062f \u0648 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0646\u06af\u0648 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0645\u0646\u0637\u0642 \u06a9\u062a\u0627\u0628 \u0647\u0627 \u0648 \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   <span class=\"nb\">cd <\/span>library_project\n   python manage.py startapp library\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\u062f\u0644 \u0647\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f: \u062f\u0631 <code>library\/models.py<\/code> \u0641\u0627\u06cc\u0644\u060c \u0645\u062f\u0644 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u062a\u0627\u0628 \u0647\u0627 \u0648 \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.  \u0645\u062b\u0644\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code>   <span class=\"kn\">from<\/span> <span class=\"nn\">django.db<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">models<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Author<\/span><span class=\"p\">(<\/span><span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">CharField<\/span><span class=\"p\">(<\/span><span class=\"n\">max_length<\/span><span class=\"o\">=<\/span><span class=\"mi\">100<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">__str__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">name<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_absolute_url<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"sa\">f<\/span><span class=\"s\">\"\/authors\/<\/span><span class=\"si\">{<\/span><span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"nb\">id<\/span><span class=\"si\">}<\/span><span class=\"s\">\/\"<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Book<\/span><span class=\"p\">(<\/span><span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">title<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">CharField<\/span><span class=\"p\">(<\/span><span class=\"n\">max_length<\/span><span class=\"o\">=<\/span><span class=\"mi\">100<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">author<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"n\">Author<\/span><span class=\"p\">,<\/span> <span class=\"n\">on_delete<\/span><span class=\"o\">=<\/span><span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">CASCADE<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">__str__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">title<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_absolute_url<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">return<\/span> <span class=\"sa\">f<\/span><span class=\"s\">\"\/books\/<\/span><span class=\"si\">{<\/span><span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"nb\">id<\/span><span class=\"si\">}<\/span><span class=\"s\">\/\"<\/span>\n\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\u062c\u0627\u062f \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632: \u062f\u0631 <code>library\/serializers.py<\/code> \u0641\u0627\u06cc\u0644\u060c \u0633\u0631\u06cc\u0627\u0644\u200c\u0633\u0627\u0632 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.  \u0634\u0627\u0645\u0644 <code>SerializerMethodField<\/code> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u0633\u06cc\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0627\u06cc <code>id<\/code> \u0631\u0634\u062a\u0647.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code>   <span class=\"kn\">from<\/span> <span class=\"nn\">rest_framework<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">serializers<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">library.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Author<\/span><span class=\"p\">,<\/span> <span class=\"n\">Book<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">AuthorSerializer<\/span><span class=\"p\">(<\/span><span class=\"n\">serializers<\/span><span class=\"p\">.<\/span><span class=\"n\">ModelSerializer<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">detail<\/span> <span class=\"o\">=<\/span> <span class=\"n\">serializers<\/span><span class=\"p\">.<\/span><span class=\"n\">SerializerMethodField<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_detail<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">obj<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">request<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"s\">'request'<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">:<\/span>\n            <span class=\"k\">return<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">build_absolute_uri<\/span><span class=\"p\">(<\/span><span class=\"n\">obj<\/span><span class=\"p\">.<\/span><span class=\"n\">get_absolute_url<\/span><span class=\"p\">())<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">obj<\/span><span class=\"p\">.<\/span><span class=\"nb\">id<\/span>\n\n    <span class=\"k\">class<\/span> <span class=\"nc\">Meta<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Author<\/span>\n        <span class=\"n\">fields<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'__all__'<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">BookSerializer<\/span><span class=\"p\">(<\/span><span class=\"n\">serializers<\/span><span class=\"p\">.<\/span><span class=\"n\">ModelSerializer<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">detail<\/span> <span class=\"o\">=<\/span> <span class=\"n\">serializers<\/span><span class=\"p\">.<\/span><span class=\"n\">SerializerMethodField<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">author<\/span> <span class=\"o\">=<\/span> <span class=\"n\">AuthorSerializer<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_detail<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">obj<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">request<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"s\">'request'<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">request<\/span><span class=\"p\">:<\/span>\n            <span class=\"k\">return<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">build_absolute_uri<\/span><span class=\"p\">(<\/span><span class=\"n\">obj<\/span><span class=\"p\">.<\/span><span class=\"n\">get_absolute_url<\/span><span class=\"p\">())<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">obj<\/span><span class=\"p\">.<\/span><span class=\"nb\">id<\/span>\n\n    <span class=\"k\">class<\/span> <span class=\"nc\">Meta<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Book<\/span>\n        <span class=\"n\">fields<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'__all__'<\/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>\u062a\u0639\u0631\u06cc\u0641 URL: \u062f\u0631 <code>library\/urls.py<\/code> \u0641\u0627\u06cc\u0644\u060c URL \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0642\u0627\u0637 \u0627\u0646\u062a\u0647\u0627\u06cc\u06cc API \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code>   <span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">library.views<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">BookListCreateView<\/span><span class=\"p\">,<\/span> <span class=\"n\">BookRetrieveUpdateDestroyView<\/span><span class=\"p\">,<\/span> <span class=\"n\">AuthorListCreateView<\/span>\n\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'books\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">BookListCreateView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'book-list-create'<\/span><span class=\"p\">),<\/span>\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'books\/&lt;int:pk&gt;\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">BookRetrieveUpdateDestroyView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'book-retrieve-update-destroy'<\/span><span class=\"p\">),<\/span>\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'authors\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">AuthorListCreateView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'book-list-create'<\/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>\u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0627\u0647\u0627: \u062f\u0631 <code>library\/views.py<\/code> \u0641\u0627\u06cc\u0644\u060c \u0646\u0645\u0627\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code>   <span class=\"kn\">from<\/span> <span class=\"nn\">rest_framework<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">generics<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">library.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Book<\/span><span class=\"p\">,<\/span> <span class=\"n\">Author<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">library.serializers<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">BookSerializer<\/span><span class=\"p\">,<\/span> <span class=\"n\">AuthorSerializer<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">BookListCreateView<\/span><span class=\"p\">(<\/span><span class=\"n\">generics<\/span><span class=\"p\">.<\/span><span class=\"n\">ListCreateAPIView<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">queryset<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Book<\/span><span class=\"p\">.<\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span><span class=\"nb\">all<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">serializer_class<\/span> <span class=\"o\">=<\/span> <span class=\"n\">BookSerializer<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">BookRetrieveUpdateDestroyView<\/span><span class=\"p\">(<\/span><span class=\"n\">generics<\/span><span class=\"p\">.<\/span><span class=\"n\">RetrieveUpdateDestroyAPIView<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">queryset<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Book<\/span><span class=\"p\">.<\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span><span class=\"nb\">all<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">serializer_class<\/span> <span class=\"o\">=<\/span> <span class=\"n\">BookSerializer<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">AuthorListCreateView<\/span><span class=\"p\">(<\/span><span class=\"n\">generics<\/span><span class=\"p\">.<\/span><span class=\"n\">ListCreateAPIView<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">queryset<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Author<\/span><span class=\"p\">.<\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span><span class=\"nb\">all<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">serializer_class<\/span> <span class=\"o\">=<\/span> <span class=\"n\">AuthorSerializer<\/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>\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f: \u062f\u0631 <code>library_project\/settings.py<\/code> \u0641\u0627\u06cc\u0644\u060c \u0634\u0627\u0645\u0644 <code>library<\/code> \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0686\u0627\u0631\u0686\u0648\u0628 REST.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code>   <span class=\"n\">INSTALLED_APPS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n       <span class=\"c1\"># Other apps...\n<\/span>       <span class=\"s\">'library'<\/span><span class=\"p\">,<\/span>\n       <span class=\"s\">'rest_framework'<\/span><span class=\"p\">,<\/span>\n   <span class=\"p\">]<\/span>\n\n   <span class=\"n\">REST_FRAMEWORK<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n       <span class=\"s\">'DEFAULT_RENDERER_CLASSES'<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n           <span class=\"s\">'rest_framework.renderers.JSONRenderer'<\/span><span class=\"p\">,<\/span>\n       <span class=\"p\">]<\/span>\n   <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\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>\u067e\u06cc\u0648\u0646\u062f\u06cc \u0628\u0647 \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 urlr.py \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f: \u062f\u0631 <code>library_project\/urls.py<\/code> \u0641\u0627\u06cc\u0644\u060c \u0634\u0627\u0645\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">django.contrib<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">admin<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span><span class=\"p\">,<\/span> <span class=\"n\">include<\/span> <span class=\"c1\"># import include\n<\/span>\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'admin\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">admin<\/span><span class=\"p\">.<\/span><span class=\"n\">site<\/span><span class=\"p\">.<\/span><span class=\"n\">urls<\/span><span class=\"p\">),<\/span>\n    <span class=\"c1\"># include the library app urls module\n<\/span>    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">''<\/span><span class=\"p\">,<\/span> <span class=\"n\">include<\/span><span class=\"p\">(<\/span><span class=\"s\">'library.urls'<\/span><span class=\"p\">)),<\/span>\n<span class=\"p\">]<\/span>\n   <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\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>Run migrations: \u0645\u0647\u0627\u062c\u0631\u062a \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0627\u0648\u0644 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u0647\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   python manage.py makemigrations\n   python manage.py migrate\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>\u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f: \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 API \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   python manage.py runserver\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\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a:<\/p>\n<p><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>curl <span class=\"nt\">--location<\/span> <span class=\"s1\">'http:\/\/127.0.0.1:8000\/books\/'<\/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><strong>\u0648\u0627\u06a9\u0646\u0634:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"o\">[<\/span>\n    <span class=\"o\">{<\/span>\n        <span class=\"s2\">\"id\"<\/span>: 1,\n        <span class=\"s2\">\"detail\"<\/span>: <span class=\"s2\">\"http:\/\/127.0.0.1:8000\/books\/1\/\"<\/span>,\n        <span class=\"s2\">\"author\"<\/span>: <span class=\"o\">{<\/span>\n            <span class=\"s2\">\"id\"<\/span>: 1,\n            <span class=\"s2\">\"detail\"<\/span>: <span class=\"s2\">\"http:\/\/127.0.0.1:8000\/authors\/1\/\"<\/span>,\n            <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"Stephen Nwankwo\"<\/span>\n        <span class=\"o\">}<\/span>,\n        <span class=\"s2\">\"title\"<\/span>: <span class=\"s2\">\"Tales of Ogun\"<\/span>\n    <span class=\"o\">}<\/span>,\n    <span class=\"o\">{<\/span>\n        <span class=\"s2\">\"id\"<\/span>: 2,\n        <span class=\"s2\">\"detail\"<\/span>: <span class=\"s2\">\"http:\/\/127.0.0.1:8000\/books\/2\/\"<\/span>,\n        <span class=\"s2\">\"author\"<\/span>: <span class=\"o\">{<\/span>\n            <span class=\"s2\">\"id\"<\/span>: 1,\n            <span class=\"s2\">\"detail\"<\/span>: <span class=\"s2\">\"http:\/\/127.0.0.1:8000\/authors\/1\/\"<\/span>,\n            <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"Stephen Nwankwo\"<\/span>\n        <span class=\"o\">}<\/span>,\n        <span class=\"s2\">\"title\"<\/span>: <span class=\"s2\">\"Tales of Ogun\"<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\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<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A2%DB%8C%D8%A7_%D9%85%D8%A7_%D9%88%D8%A7%D9%82%D8%B9%D8%A7%D9%8B_%D8%A8%D9%87_HATEOAS_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B1%DB%8C%D9%85%D8%9F\"><\/span>\n<p>  \u0622\u06cc\u0627 \u0645\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 HATEOAS \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/06\/1687983691_445_\u0627\u0635\u0644-HATEOAS-\u0627\u06cc\u062c\u0627\u062f-\u0645\u0633\u06cc\u0631\u0647\u0627\u06cc-\u06a9\u0627\u0645\u0644-\u0628\u0631\u0627\u06cc-\u0627\u0634\u06cc\u0627-\u062f\u0631-\u0686\u0627\u0631\u0686\u0648\u0628.png\" alt=\"\u0686\u0631\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc HATEOAS \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\" loading=\"lazy\" width=\"400\" height=\"387\" title=\"\"><\/p>\n<p>\u0645\u0646 \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 API\u0647\u0627 \u0631\u0627 \u0645\u0631\u0648\u0631 \u06a9\u0631\u062f\u0645 \u0648 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc HATEOS \u0645\u0648\u0627\u062c\u0647 \u0646\u0634\u062f\u0645.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u06a9\u0633\u06cc \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u06cc\u0627 \u0646\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u06cc\u0627 \u0645\u062f\u06cc\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0633\u062a\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u0645\u06a9 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u062a\u0635\u0645\u06cc\u0645 \u06af\u06cc\u0631\u06cc\u060c \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0648 \u0627\u0647\u062f\u0627\u0641 \u062e\u0627\u0635 \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0686\u0646\u062f \u0646\u06a9\u062a\u0647 \u0642\u0627\u0628\u0644 \u062a\u0627\u0645\u0644 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\n<p>\u0642\u0627\u0628\u0644\u06cc\u062a \u06a9\u0634\u0641 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647: HATEOAS \u0645\u0627\u0647\u06cc\u062a \u062a\u0648\u0635\u06cc\u0641\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc API\u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0645\u0646\u0627\u0628\u0639 \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u06a9\u0634\u0641 \u0648 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u06a9\u0646\u0646\u062f.  \u0627\u06cc\u0646 \u0646\u06cc\u0627\u0632 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0631\u0627 \u0628\u0647 \u062a\u06a9\u06cc\u0647 \u0628\u0631 \u062f\u0627\u0646\u0634 \u0642\u0628\u0644\u06cc \u06cc\u0627 URL \u0647\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f API \u0628\u0635\u0631\u06cc \u062a\u0631 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<\/li>\n<li>\n<p>\u06a9\u0648\u067e\u0644\u06cc\u0646\u06af \u06a9\u0627\u0647\u0634 \u06cc\u0627\u0641\u062a\u0647: \u0628\u0627 \u06af\u0646\u062c\u0627\u0646\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627 \u06cc\u0627 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u0631\u062a\u0628\u0637 \u062f\u0631 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc API\u060c HATEOAS \u062c\u0641\u062a \u0634\u062f\u0646 \u0628\u06cc\u0646 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0647\u0627 \u0648 \u0633\u0631\u0648\u0631\u0647\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.  \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0646\u062f \u0648 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0627\u0646\u0633\u062a\u0646 \u06a9\u0644 \u0633\u0627\u062e\u062a\u0627\u0631 API \u0627\u0632 \u0642\u0628\u0644\u060c \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f.  \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0627\u062a\u0635\u0627\u0644 \u0634\u0644 \u0631\u0627 \u062a\u0642\u0648\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u06af\u0633\u062a\u0631\u0634 \u062a\u0631 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647: HATEOAS \u0633\u0631\u0648\u0631 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u062a\u0627 \u062a\u06a9\u0627\u0645\u0644 \u06cc\u0627\u0628\u062f \u0648 \u0645\u0646\u0627\u0628\u0639 \u06cc\u0627 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u062f\u0648\u0646 \u0634\u06a9\u0633\u062a\u0646 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f.  \u0645\u0634\u062a\u0631\u06cc\u0627\u0646\u06cc \u06a9\u0647 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc API \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u06a9\u062f \u062e\u0648\u062f\u060c \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 API \u0633\u0627\u0632\u06af\u0627\u0631 \u0634\u0648\u0646\u062f.  \u0627\u06cc\u0646 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 API \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u062a\u0631 \u0634\u0648\u062f \u0648 \u0646\u0633\u062e\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0647 \u0639\u0642\u0628 \u0631\u0627 \u062a\u0633\u0647\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0633\u0627\u062f\u06af\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u0634\u062a\u0631\u06cc: HATEOAS \u062a\u0648\u0633\u0639\u0647 \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0647\u062f\u0627\u06cc\u062a \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 API \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u062c\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 URL \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u06cc\u0627 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0633\u062e\u062a\u060c \u0628\u0647 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc API \u062a\u06a9\u06cc\u0647 \u06a9\u0646\u0646\u062f.  \u0627\u06cc\u0646 \u0628\u0627\u0639\u062b \u06a9\u0627\u0647\u0634 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0648 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u062f\u0631 \u06a9\u062f \u0645\u0634\u062a\u0631\u06cc \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0648 \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc: HATEOAS \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0634\u06a9\u0644\u06cc \u0627\u0632 \u062e\u0648\u062f \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f API \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0627\u0633\u062e\u200c\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0631\u062c\u0639\u06cc \u0628\u0647 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0648 \u0645\u0646\u0627\u0628\u0639 \u0645\u0648\u062c\u0648\u062f \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u062f\u0631\u06a9 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0624\u062b\u0631 \u0627\u0632 API \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<\/li>\n<\/ol>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc HATEOAS \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u0637\u0631\u0627\u062d\u06cc \u0648 \u062a\u0648\u0633\u0639\u0647 API \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0645\u06cc\u200c\u0627\u0641\u0632\u0627\u06cc\u062f.  \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0645\u0633\u062a\u0644\u0632\u0645 \u0628\u0631\u0631\u0633\u06cc \u062f\u0642\u06cc\u0642 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0622\u0646 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u0648\u0646\u062f\u060c \u0627\u06cc\u062c\u0627\u062f \u062a\u0639\u0627\u062f\u0644 \u0628\u06cc\u0646 \u0627\u0631\u0627\u0626\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0641\u06cc \u0648 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u063a\u0644\u0628\u0647 \u0628\u0631 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0628\u0627 \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f.  \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c HATEOAS \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API \u0636\u0631\u0648\u0631\u06cc \u06cc\u0627 \u0645\u0646\u0627\u0633\u0628 \u0646\u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u0645\u0646\u0647 API \u06a9\u0648\u0686\u06a9 \u0627\u0633\u062a \u06cc\u0627 \u062a\u0639\u0627\u0645\u0644 \u0645\u0634\u062a\u0631\u06cc \u0648 \u0633\u0631\u0648\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u062a\u0635\u0645\u06cc\u0645 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HATEOAS \u0628\u0627\u06cc\u062f \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0648\u0627\u0645\u0644\u06cc \u0645\u0627\u0646\u0646\u062f \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc API \u0634\u0645\u0627\u060c \u0633\u0637\u062d \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u06a9\u0634\u0641 \u0648 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0634\u0645\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<hr\/>\n<p>\u0644\u0637\u0641\u0627 \u0627\u06af\u0631 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u0645\u0641\u06cc\u062f \u062f\u06cc\u062f\u06cc\u062f \u0644\u0627\u06cc\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0638\u0631\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u0646\u0638\u0631\u0627\u062a \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.<\/p>\n<p><strong>\u0645\u0646\u0627\u0628\u0639:<\/strong><\/p>\n<p>https:\/\/learn.microsoft.com\/en-us\/azure\/architecture\/best-practices\/api-design<\/p>\n<p>https:\/\/www.geeksforgeeks.org\/hateoas-and-why-its-needed-in-restful-api\/<\/p>\n<p>https:\/\/www.w3schools.in\/restful-web-services\/rest-apis-hateoas-concept#google_vignette<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u067e\u06cc\u0634\u06cc\u0646\u0647 \u062f\u0627\u0633\u062a\u0627\u0646: Pssft &#8211; \u0644\u0637\u0641\u0627 \u0646\u0632\u062f\u06cc\u06a9\u062a\u0631 \u0634\u0648\u06cc\u062f.\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u06af\u0631\u0648\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062e\u0627\u0635 WhatsApp \u0647\u0633\u062a\u0645\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u062c\u0641\u062a\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f. \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u062a\u0631\u06cc\u0646 \u0622\u0646\u0647\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f &#8211; \u0627\u0632 \u0641\u0631\u0635\u062a \u0647\u0627\u06cc \u0634\u063a\u0644\u06cc \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0686\u0627\u0631\u0686\u0648\u0628 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":28496,"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-28492","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\/28492","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=28492"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/28492\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/28496"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=28492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=28492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=28492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}