{"id":28271,"date":"2023-06-27T12:09:27","date_gmt":"2023-06-27T08:39:27","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/rest-api-using-gogin-mongo-33i3\/"},"modified":"2023-06-27T12:09:27","modified_gmt":"2023-06-27T08:39:27","slug":"rest-api-using-gogin-mongo-33i3","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/rest-api-using-gogin-mongo-33i3\/","title":{"rendered":"REST API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 GO(gin) \u0648 Mongo"},"content":{"rendered":"<div data-article-id=\"1512365\" id=\"article-body\">\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af\u060c \u0645\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 API RESTful \u0628\u0627 \u062f\u0648 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0633\u0627\u062e\u062a.  \u067e\u0631\u0648\u0698\u0647 \u0645\u062b\u0627\u0644\u060c \u0645\u062e\u0632\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u062f\u0631 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\u0637\u0631\u0627\u062d\u06cc \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API<\/li>\n<li>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 qmgo \u0628\u0647 MongoDB \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f<\/li>\n<li>\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f\n<ul>\n<li>\u06cc\u06a9 \u06a9\u062a\u0627\u0628 \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0647\u0645\u0647 \u06a9\u062a\u0627\u0628 \u0647\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u06a9\u062a\u0627\u0628 \u062e\u0627\u0635 \u0628\u06af\u06cc\u0631\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u06a9\u062a\u0627\u0628 \u062e\u0627\u0635 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<\/li>\n<\/ol>\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\/rest-api-using-gogin-mongo-33i3\/#%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\" >\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627:<\/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\/rest-api-using-gogin-mongo-33i3\/#%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C_%D9%86%D9%82%D8%A7%D8%B7_%D9%BE%D8%A7%DB%8C%D8%A7%D9%86%DB%8C_API\" >\u0637\u0631\u0627\u062d\u06cc \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API:<\/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\/rest-api-using-gogin-mongo-33i3\/#%DB%8C%DA%A9_%D9%BE%D9%88%D8%B4%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%AF_%D9%85%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/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\/rest-api-using-gogin-mongo-33i3\/#%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%D9%88_%D9%BE%D8%A7%D8%B3%D8%AE_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%AA%D8%A7%D8%A8_%D9%87%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u062a\u0627\u0628 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/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\/rest-api-using-gogin-mongo-33i3\/#%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D9%85%D8%AF%D9%84_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u062f\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/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\/rest-api-using-gogin-mongo-33i3\/#%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_API_%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA_%DA%A9%D8%AA%D8%A7%D8%A8\" >\u062f\u0631\u06cc\u0627\u0641\u062a API \u062c\u0632\u0626\u06cc\u0627\u062a \u06a9\u062a\u0627\u0628:<\/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\/rest-api-using-gogin-mongo-33i3\/#%D8%A8%D9%87%E2%80%8C%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_%DB%8C%DA%A9_API_%DA%A9%D8%AA%D8%A7%D8%A8\" >\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06cc\u06a9 API \u06a9\u062a\u0627\u0628:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/rest-api-using-gogin-mongo-33i3\/#%D8%AD%D8%B0%D9%81_%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%DA%A9%D8%AA%D8%A7%D8%A8\" >\u062d\u0630\u0641 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06a9\u062a\u0627\u0628:<\/a><\/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\/rest-api-using-gogin-mongo-33i3\/#%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%DA%A9%D8%AA%D8%A7%D8%A8_%D9%87%D8%A7\" >\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u06a9\u062a\u0627\u0628 \u0647\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/rest-api-using-gogin-mongo-33i3\/#Books_REST_API_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_go_%D9%88_mongo\" >Books REST API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 go \u0648 mongo<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/rest-api-using-gogin-mongo-33i3\/#%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7-2\" >\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627:<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\"><\/span>\n<p>  \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u0646\u0635\u0628 Go 1.20 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631.  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0646\u0635\u0628\u060c \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0646\u0635\u0628 MongoDB 6.0 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631.  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0646\u0635\u0628\u060c \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f <\/li>\n<li>\u0647\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u06cc\u0627 IDE \u06a9\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C_%D9%86%D9%82%D8%A7%D8%B7_%D9%BE%D8%A7%DB%8C%D8%A7%D9%86%DB%8C_API\"><\/span>\n<p>  \u0637\u0631\u0627\u062d\u06cc \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u06cc\u06a9 API \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646\u0647\u0627 \u0645\u0634\u062a\u0631\u06cc \u0628\u062a\u0648\u0627\u0646\u062f \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a\u060c \u0627\u0636\u0627\u0641\u0647 \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p><code>\/books<\/code><\/p>\n<p>GET &#8211; \u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 \u0647\u0645\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f.<br \/>POST &#8211; \u06cc\u06a9 \u06a9\u062a\u0627\u0628 \u062c\u062f\u06cc\u062f \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 JSON \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><code>\/books\/:id<\/code><\/p>\n<p>GET &#8211; \u06a9\u062a\u0627\u0628\u06cc \u0631\u0627 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0622\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f.<br \/>PATCH &#8211; \u06cc\u06a9 \u06a9\u062a\u0627\u0628 \u0631\u0627 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0622\u0646 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f.<br \/>DELETE &#8211; \u06cc\u06a9 \u06a9\u062a\u0627\u0628 \u0631\u0627 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0622\u0646 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0636\u0639\u06cc\u062a \u062d\u0630\u0641 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D9%BE%D9%88%D8%B4%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%AF_%D9%85%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0645\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646\u060c \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f \u062e\u0648\u062f \u0628\u0647 \u0646\u0627\u0645 books \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ mkdir books\n$ cd books\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\u0627\u0698\u0648\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>go mod init<\/code> \u062f\u0633\u062a\u0648\u0631\u060c \u0628\u0647 \u0622\u0646 \u0645\u0633\u06cc\u0631 \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u06a9\u062f \u0645\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ go mod init books\ngo: creating new go.mod: module books\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 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 go.mod \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0631\u062f\u06cc\u0627\u0628\u06cc \u0644\u06cc\u0633\u062a \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 IDE\/Text\u060c \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 main.go \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u06a9\u062a\u0627\u0628 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.  \u0645\u0627 \u06a9\u062f Go \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0645\u06cc \u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n<p>\u062f\u0631 main.go\u060c \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0627\u0639\u0644\u0627\u0646 \u0628\u0633\u062a\u0647 \u0632\u06cc\u0631 \u0648 \u062a\u0627\u0628\u0639 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f \u0632\u06cc\u0631\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0633\u062a\u0642\u0644 (\u0628\u0631\u062e\u0644\u0627\u0641 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647) \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u0628\u0633\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">package<\/span> <span class=\"n\">main<\/span>\n\n<span class=\"k\">func<\/span> <span class=\"n\">main<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n\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>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 <code>go run .<\/code><\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u0627\u0639\u0644\u0627\u0646 \u0628\u0633\u062a\u0647\u060c \u0634\u0631\u0648\u0639 \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 MongoDB \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>qmgo \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 cmd \u0632\u06cc\u0631 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p><code>go get github.com\/gin-gonic\/gin<\/code><\/p>\n<p>\u0628\u0633\u062a\u0647 &#8220;github.com\/qiniu\/qmgo&#8221; \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f <code>database<\/code> \u0648 <code>collection<\/code> \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062a\u0627\u0628\u0639 \u0627\u0635\u0644\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0639\u062f\u0627\u064b \u0628\u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a CRUD \u0631\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">var<\/span> <span class=\"n\">database<\/span> <span class=\"o\">*<\/span><span class=\"n\">qmgo<\/span><span class=\"o\">.<\/span><span class=\"n\">Database<\/span>\n<span class=\"k\">var<\/span> <span class=\"n\">collection<\/span> <span class=\"o\">*<\/span><span class=\"n\">qmgo<\/span><span class=\"o\">.<\/span><span class=\"n\">Collection<\/span>\n\n<span class=\"k\">func<\/span> <span class=\"n\">main<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"c\">\/\/ create new Client<\/span>\n    <span class=\"k\">const<\/span> <span class=\"n\">databaseURI<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"mongodb:\/\/localhost:27017\"<\/span>\n    <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Println<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Connecting to database\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">databaseURI<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">ctx<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">context<\/span><span class=\"o\">.<\/span><span class=\"n\">Background<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">connection<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">qmgo<\/span><span class=\"o\">.<\/span><span class=\"n\">NewClient<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">qmgo<\/span><span class=\"o\">.<\/span><span class=\"n\">Config<\/span><span class=\"p\">{<\/span><span class=\"n\">Uri<\/span><span class=\"o\">:<\/span> <span class=\"n\">databaseURI<\/span><span class=\"p\">})<\/span>\n\n    <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"n\">connection<\/span><span class=\"o\">.<\/span><span class=\"n\">Database<\/span><span class=\"p\">(<\/span><span class=\"s\">\"test\"<\/span><span class=\"p\">)<\/span>    <span class=\"c\">\/\/ creating Database connection<\/span>\n    <span class=\"n\">collection<\/span> <span class=\"o\">=<\/span> <span class=\"n\">database<\/span><span class=\"o\">.<\/span><span class=\"n\">Collection<\/span><span class=\"p\">(<\/span><span class=\"s\">\"books\"<\/span><span class=\"p\">)<\/span> <span class=\"c\">\/\/ get the collection<\/span>\n    <span class=\"k\">defer<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">connection<\/span><span class=\"o\">.<\/span><span class=\"n\">Close<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">);<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Println<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Closing Connection to database\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">databaseURI<\/span><span class=\"p\">)<\/span>\n            <span class=\"nb\">panic<\/span><span class=\"p\">(<\/span><span class=\"n\">err<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}()<\/span>\n\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\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u0647\u0646\u062f\u0644\u0631\u0647\u0627 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u067e\u0648\u0631\u062a http \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc \u062f\u0647\u06cc\u0645 (\u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627 <code>8000<\/code>) \u062f\u0631 \u062a\u0627\u0628\u0639 \u0627\u0635\u0644\u06cc.<\/p>\n<p>\u062c\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 cmd \u0632\u06cc\u0631 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p><code>go get github.com\/gin-gonic\/gin<\/code><br \/>\u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>    <span class=\"n\">router<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">gin<\/span><span class=\"o\">.<\/span><span class=\"n\">Default<\/span><span class=\"p\">()<\/span> <span class=\"c\">\/\/ create router using gin<\/span>\n\n    <span class=\"c\">\/\/ register routes<\/span>\n    <span class=\"n\">router<\/span><span class=\"o\">.<\/span><span class=\"n\">POST<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/books\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">CreateBook<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Println<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Service is up &amp; running at localhost:8000\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">router<\/span><span class=\"o\">.<\/span><span class=\"n\">Run<\/span><span class=\"p\">(<\/span><span class=\"s\">\":8000\"<\/span><span class=\"p\">)<\/span> <span class=\"c\">\/\/ register router to port 8000<\/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 \u0645\u0627 \u06cc\u06a9 \u0631\u0648\u062a\u0631 POST \u062b\u0628\u062a \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u0648 \u062a\u0627\u0628\u0639 CreateBook \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 books.go \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06a9\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%D9%88_%D9%BE%D8%A7%D8%B3%D8%AE_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%AA%D8%A7%D8%A8_%D9%87%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u062a\u0627\u0628 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"c\">\/\/ form:\"title\" to map the JSON field name to the struct<\/span>\n<span class=\"c\">\/\/ binding:\"required\" to enforce the value is required<\/span>\n<span class=\"k\">type<\/span> <span class=\"n\">BookCreateUpdateRequest<\/span> <span class=\"k\">struct<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">Title<\/span>  <span class=\"kt\">string<\/span> <span class=\"s\">`form:\"title\" binding:\"required\"`<\/span>\n    <span class=\"n\">Author<\/span> <span class=\"kt\">string<\/span> <span class=\"s\">`form:\"author\"`<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c\">\/\/ json:\"id\" to map the struct Name to its Json field name<\/span>\n<span class=\"k\">type<\/span> <span class=\"n\">BookResponse<\/span> <span class=\"k\">struct<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">Id<\/span>        <span class=\"n\">primitive<\/span><span class=\"o\">.<\/span><span class=\"n\">ObjectID<\/span> <span class=\"s\">`json:\"id\"`<\/span>\n    <span class=\"n\">Title<\/span>     <span class=\"kt\">string<\/span>             <span class=\"s\">`json:\"title\"`<\/span>\n    <span class=\"n\">Author<\/span>    <span class=\"kt\">string<\/span>             <span class=\"s\">`json:\"author\"`<\/span>\n    <span class=\"n\">CreatedAt<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">Time<\/span>          <span class=\"s\">`json:\"createdAt\"`<\/span>\n    <span class=\"n\">UpdatedAt<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">Time<\/span>          <span class=\"s\">`json:\"updatedAt\"`<\/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<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D9%85%D8%AF%D9%84_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u062f\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">type<\/span> <span class=\"n\">Book<\/span> <span class=\"k\">struct<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">field<\/span><span class=\"o\">.<\/span><span class=\"n\">DefaultField<\/span> <span class=\"s\">`bson:\"inline\"`<\/span>\n    <span class=\"n\">Title<\/span>              <span class=\"kt\">string<\/span> <span class=\"s\">`bson:\"title\" validate:\"required\"`<\/span>\n    <span class=\"n\">Author<\/span>             <span class=\"kt\">string<\/span> <span class=\"s\">`bson:\"author\"`<\/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>\u0628\u06cc\u0627\u06cc\u06cc\u062f CreateBookmethod \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u062a\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">CreateBook<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span> <span class=\"o\">*<\/span><span class=\"n\">gin<\/span><span class=\"o\">.<\/span><span class=\"n\">Context<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">newBook<\/span> <span class=\"n\">BookCreateUpdateRequest<\/span>\n\n    <span class=\"c\">\/\/ to bind the received JSON to BookRequest to strip the unnecessary fields.<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">ShouldBind<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">newBook<\/span><span class=\"p\">);<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusBadRequest<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Invalid Request\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ setting data to book model struct<\/span>\n    <span class=\"n\">book<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">Book<\/span><span class=\"p\">{<\/span>\n        <span class=\"n\">Title<\/span><span class=\"o\">:<\/span>  <span class=\"n\">newBook<\/span><span class=\"o\">.<\/span><span class=\"n\">Title<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">Author<\/span><span class=\"o\">:<\/span> <span class=\"n\">newBook<\/span><span class=\"o\">.<\/span><span class=\"n\">Author<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">_<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">InsertOne<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">book<\/span><span class=\"p\">)<\/span> <span class=\"c\">\/\/Inserting the Book Data to database<\/span>\n\n    <span class=\"c\">\/\/ to send error response if any error occurs<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusInternalServerError<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Something went wrong, Try again after sometime\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ to send success response on completion<\/span>\n    <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusCreated<\/span><span class=\"p\">,<\/span> <span class=\"n\">GetBooksResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">book<\/span><span class=\"p\">))<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">func<\/span> <span class=\"n\">GetBooksResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">book<\/span> <span class=\"n\">Book<\/span><span class=\"p\">)<\/span> <span class=\"p\">(<\/span><span class=\"n\">bookResponse<\/span> <span class=\"n\">BookResponse<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c\">\/\/ setting response for book<\/span>\n    <span class=\"n\">bookResponse<\/span> <span class=\"o\">=<\/span> <span class=\"n\">BookResponse<\/span><span class=\"p\">{<\/span>\n        <span class=\"n\">Id<\/span><span class=\"o\">:<\/span>        <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">DefaultField<\/span><span class=\"o\">.<\/span><span class=\"n\">Id<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">Title<\/span><span class=\"o\">:<\/span>     <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">Title<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">Author<\/span><span class=\"o\">:<\/span>    <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">Author<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">CreatedAt<\/span><span class=\"o\">:<\/span> <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">CreateAt<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">UpdatedAt<\/span><span class=\"o\">:<\/span> <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">UpdateAt<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"k\">return<\/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 \u06a9\u062f \u0628\u0627\u0644\u0627\u060c \u0627\u0632 \u0645\u062a\u062f GetBooksResponse \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u067e\u0627\u0633\u062e\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u0633\u0627\u06cc\u0631 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc API \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f).<\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 Handlers \u0628\u0631\u0627\u06cc Get, List, Update \u0648 Delete \u0622\u0645\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA_API_%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA_%DA%A9%D8%AA%D8%A7%D8%A8\"><\/span>\n<p>  \u062f\u0631\u06cc\u0627\u0641\u062a API \u062c\u0632\u0626\u06cc\u0627\u062a \u06a9\u062a\u0627\u0628:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">GetBook<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span> <span class=\"o\">*<\/span><span class=\"n\">gin<\/span><span class=\"o\">.<\/span><span class=\"n\">Context<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"c\">\/\/ to get and convert the received path variable to  desired type<\/span>\n    <span class=\"n\">bookId<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">primitive<\/span><span class=\"o\">.<\/span><span class=\"n\">ObjectIDFromHex<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">Param<\/span><span class=\"p\">(<\/span><span class=\"s\">\"bookId\"<\/span><span class=\"p\">))<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusBadRequest<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Invalid Request\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/Getting the Book Data from database<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">book<\/span> <span class=\"n\">Book<\/span>\n    <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">Find<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">bson<\/span><span class=\"o\">.<\/span><span class=\"n\">M<\/span><span class=\"p\">{<\/span><span class=\"s\">\"_id\"<\/span><span class=\"o\">:<\/span> <span class=\"n\">bookId<\/span><span class=\"p\">})<\/span><span class=\"o\">.<\/span><span class=\"n\">One<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">book<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ to send error response if any error occurs<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusNotFound<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Book Not Found\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ to send success response on completion<\/span>\n    <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusOK<\/span><span class=\"p\">,<\/span> <span class=\"n\">GetBooksResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">book<\/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 \u06a9\u062f \u0628\u0627\u0644\u0627 <code>bson.M{\"_id\": bookId}<\/code> \u0628\u0631\u0627\u06cc \u06cc\u0627\u0641\u062a\u0646 \u06a9\u062a\u0627\u0628 \u062a\u0648\u0633\u0637 Id \u0648 One \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u062f\u0627\u062f\u0647 mongo \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631 book \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87%E2%80%8C%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_%DB%8C%DA%A9_API_%DA%A9%D8%AA%D8%A7%D8%A8\"><\/span>\n<p>  \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06cc\u06a9 API \u06a9\u062a\u0627\u0628:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">UpdateBook<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span> <span class=\"o\">*<\/span><span class=\"n\">gin<\/span><span class=\"o\">.<\/span><span class=\"n\">Context<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"c\">\/\/ to get and convert the received path variable to  desired type<\/span>\n    <span class=\"n\">bookId<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">primitive<\/span><span class=\"o\">.<\/span><span class=\"n\">ObjectIDFromHex<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">Param<\/span><span class=\"p\">(<\/span><span class=\"s\">\"bookId\"<\/span><span class=\"p\">))<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusBadRequest<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Invalid Book ID\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">var<\/span> <span class=\"n\">newBook<\/span> <span class=\"n\">BookCreateUpdateRequest<\/span>\n\n    <span class=\"c\">\/\/ to bind the received JSON to BookRequest to strip the unnecessary fields.<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">ShouldBind<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">newBook<\/span><span class=\"p\">);<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusBadRequest<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Invalid Request\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/Getting the Book Data from database<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">book<\/span> <span class=\"n\">Book<\/span>\n    <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">Find<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">bson<\/span><span class=\"o\">.<\/span><span class=\"n\">M<\/span><span class=\"p\">{<\/span><span class=\"s\">\"_id\"<\/span><span class=\"o\">:<\/span> <span class=\"n\">bookId<\/span><span class=\"p\">})<\/span><span class=\"o\">.<\/span><span class=\"n\">One<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">book<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ to send error response if any error occurs<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusNotFound<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Book Not Found\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ set the updated value in the book<\/span>\n    <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">Author<\/span> <span class=\"o\">=<\/span> <span class=\"n\">newBook<\/span><span class=\"o\">.<\/span><span class=\"n\">Author<\/span>\n    <span class=\"n\">book<\/span><span class=\"o\">.<\/span><span class=\"n\">Title<\/span> <span class=\"o\">=<\/span> <span class=\"n\">newBook<\/span><span class=\"o\">.<\/span><span class=\"n\">Title<\/span>\n\n    <span class=\"c\">\/\/ update in database<\/span>\n    <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">ReplaceOne<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">bson<\/span><span class=\"o\">.<\/span><span class=\"n\">M<\/span><span class=\"p\">{<\/span><span class=\"s\">\"_id\"<\/span><span class=\"o\">:<\/span> <span class=\"n\">bookId<\/span><span class=\"p\">},<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">book<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusInternalServerError<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Something went wrong, Try again after sometime\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ to send success response on completion<\/span>\n    <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusOK<\/span><span class=\"p\">,<\/span> <span class=\"n\">GetBooksResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">book<\/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 \u0628\u0644\u0648\u06a9 \u06a9\u062f \u0628\u0627\u0644\u0627\u060c <code>collection.ReplaceOne<\/code> \u0628\u0631\u0627\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0633\u0646\u062f \u0645\u0648\u062c\u0648\u062f \u0628\u0631 \u0627\u0633\u0627\u0633 \u0634\u0631\u0627\u06cc\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0631\u0648\u0634 ReplaceOne \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u06cc\u0644\u062f \u067e\u06cc\u0634 \u0641\u0631\u0636 UpdateAT \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AD%D8%B0%D9%81_%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%DA%A9%D8%AA%D8%A7%D8%A8\"><\/span>\n<p>  \u062d\u0630\u0641 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06a9\u062a\u0627\u0628:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">DeleteBook<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span> <span class=\"o\">*<\/span><span class=\"n\">gin<\/span><span class=\"o\">.<\/span><span class=\"n\">Context<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"c\">\/\/ to get and convert the received path variable to  desired type<\/span>\n    <span class=\"n\">bookId<\/span><span class=\"p\">,<\/span> <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">primitive<\/span><span class=\"o\">.<\/span><span class=\"n\">ObjectIDFromHex<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">Param<\/span><span class=\"p\">(<\/span><span class=\"s\">\"bookId\"<\/span><span class=\"p\">))<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusBadRequest<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Invalid Request\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/Getting the Book Data from database<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">book<\/span> <span class=\"n\">Book<\/span>\n    <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">Find<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">bson<\/span><span class=\"o\">.<\/span><span class=\"n\">M<\/span><span class=\"p\">{<\/span><span class=\"s\">\"_id\"<\/span><span class=\"o\">:<\/span> <span class=\"n\">bookId<\/span><span class=\"p\">})<\/span><span class=\"o\">.<\/span><span class=\"n\">One<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">book<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ to send error response if any error occurs<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusNotFound<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Book Not Found\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ Deleting the book<\/span>\n    <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">RemoveId<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">bookId<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ to send error response if any error occurs<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusInternalServerError<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Something went wrong, Try again after sometime\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ to send success response on completion<\/span>\n    <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusOK<\/span><span class=\"p\">,<\/span> <span class=\"no\">true<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/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>\u062f\u0631 \u0628\u0644\u0648\u06a9 \u06a9\u062f \u0628\u0627\u0644\u0627\u060c <code>collection.RemoveId<\/code> \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0634\u0646\u0627\u0633\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%DA%A9%D8%AA%D8%A7%D8%A8_%D9%87%D8%A7\"><\/span>\n<p>  \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u06a9\u062a\u0627\u0628 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">GetBooks<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span> <span class=\"o\">*<\/span><span class=\"n\">gin<\/span><span class=\"o\">.<\/span><span class=\"n\">Context<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"c\">\/\/Getting the Book Data to database<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">books<\/span> <span class=\"p\">[]<\/span><span class=\"n\">BookListResponse<\/span>\n    <span class=\"n\">err<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">collection<\/span><span class=\"o\">.<\/span><span class=\"n\">Find<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">bson<\/span><span class=\"o\">.<\/span><span class=\"n\">M<\/span><span class=\"p\">{})<\/span><span class=\"o\">.<\/span><span class=\"n\">All<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">books<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c\">\/\/ to send error response if any error occurs<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">err<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Println<\/span><span class=\"p\">(<\/span><span class=\"n\">err<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusInternalServerError<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Something went wrong, Try again after sometime\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ to send success response on completion<\/span>\n    <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"n\">JSON<\/span><span class=\"p\">(<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">StatusOK<\/span><span class=\"p\">,<\/span> <span class=\"n\">books<\/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 \u062f\u0631 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 List\u060c \u0627\u0632 BookListResponse \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0648\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0632\u06cc\u0631\u0627 \u0634\u0646\u0627\u0633\u0647 \u0648 \u0646\u0627\u0645 \u06a9\u062a\u0627\u0628 \u062f\u0631 \u0641\u0647\u0631\u0633\u062a API \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a.  \u062f\u0631 \u0632\u06cc\u0631 \u0646\u0648\u0639 BookListResponse \u0622\u0645\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">type<\/span> <span class=\"n\">BookListResponse<\/span> <span class=\"k\">struct<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">Id<\/span>    <span class=\"n\">primitive<\/span><span class=\"o\">.<\/span><span class=\"n\">ObjectID<\/span> <span class=\"s\">`json:\"id\" bson:\"_id\"`<\/span> <span class=\"c\">\/\/ bson to map mongo _id to id<\/span>\n    <span class=\"n\">Title<\/span> <span class=\"kt\">string<\/span>             <span class=\"s\">`json:\"title\"`<\/span>\n<span class=\"p\">}<\/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\u0646\u062c\u0627 <code>bson:\"_id\"<\/code> \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0634\u062a mongo _id \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc ID \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0647\u0645\u0647 Handler \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f Handler \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0631\u0648\u062a\u0631 \u062f\u0631 main.go \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0644\u0648\u06a9 \u06a9\u062f \u0632\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0627\u0639\u0644\u0627\u0645 \u0631\u0648\u062a\u0631 \u062b\u0628\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>    <span class=\"n\">router<\/span><span class=\"o\">.<\/span><span class=\"n\">GET<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/books\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">GetBooks<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">router<\/span><span class=\"o\">.<\/span><span class=\"n\">GET<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/books\/:bookId\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">GetBook<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">router<\/span><span class=\"o\">.<\/span><span class=\"n\">PATCH<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/books\/:bookId\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">UpdateBook<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">router<\/span><span class=\"o\">.<\/span><span class=\"n\">DELETE<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/books\/:bookId\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">DeleteBook<\/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>\u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc \u06af\u0648\u06cc\u0645!!!  CRUD REST API \u0628\u0631\u0627\u06cc \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Mongo and Go \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f.<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u0645\u0646\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0645\u062e\u0632\u0646 Github \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"ltag-github-readme-tag\">\n<div class=\"readme-overview\">\n<h3><span class=\"ez-toc-section\" id=\"Books_REST_API_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_go_%D9%88_mongo\"><\/span>\n<p>      Books REST API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 go \u0648 mongo<br \/>\n    <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<\/p><\/div>\n<div class=\"ltag-github-body\">\n<div id=\"readme\" class=\"md\" data-path=\"README.md\">\n<article class=\"markdown-body entry-content container-lg\" itemprop=\"text\">\n<p dir=\"auto\">Books REST API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 go \u0648 mongo<\/p>\n<h2 dir=\"auto\"><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7-2\"><\/span>\n<p>\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul dir=\"auto\">\n<li>\u0646\u0635\u0628 Go 1.20 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631.  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0646\u0635\u0628\u060c \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0646\u0635\u0628 MongoDb 6.0 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631.  \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0646\u0635\u0628\u060c \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f\n<\/li>\n<\/ul>\n<p dir=\"auto\">\u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 REST API \u0627\u0632 cmd \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<code>go run  .<\/code><\/p>\n<\/article>\n<\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af\u060c \u0645\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 API RESTful \u0628\u0627 \u062f\u0648 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0633\u0627\u062e\u062a. \u067e\u0631\u0648\u0698\u0647 \u0645\u062b\u0627\u0644\u060c \u0645\u062e\u0632\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u062f\u0631 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a: \u0637\u0631\u0627\u062d\u06cc \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc API \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 qmgo \u0628\u0647 MongoDB \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":28272,"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-28271","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\/28271","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=28271"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/28271\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/28272"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=28271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=28271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=28271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}