{"id":488,"date":"2018-04-01T20:40:12","date_gmt":"2018-04-01T18:40:12","guid":{"rendered":"http:\/\/ahmadmagdy.me\/blog\/?p=488"},"modified":"2018-04-30T01:59:15","modified_gmt":"2018-04-29T23:59:15","slug":"%d9%85%d9%82%d8%af%d9%85%d8%a9-%d8%b9%d9%86-graphql","status":"publish","type":"post","link":"https:\/\/magdy.dk\/arblog\/?p=488","title":{"rendered":"\u0645\u0642\u062f\u0645\u0629 \u0639\u0646 GraphQL"},"content":{"rendered":"<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>\u0628\u0633\u0645 \u0627\u0644\u0644\u0647 \u0627\u0644\u0631\u062d\u0645\u0646 \u0627\u0644\u0631\u062d\u064a\u0645<\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 14pt;\">\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0642\u0627\u0644:<\/span><\/p>\n<ol>\n<li><span style=\"font-size: 14pt;\">\u00a0\u00a0\u0645\u0642\u062f\u0645\u0629.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0GraphQL vs REST.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0\u0645\u0641\u0627\u0647\u064a\u0645 \u0623\u0633\u0627\u0633\u064a\u0629 \u0641\u064a GraphQL .<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0\u062a\u0639\u0631\u064a\u0641 \u0627\u0644 Type \u0648 Input.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0\u062a\u0639\u0631\u064a\u0641 \u0627\u0644 resolvers.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0\u0639\u0645\u0644 \u0627\u0644\u0640 Schema.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0\u0631\u0628\u0637 Schema \u0645\u0639 Express .<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u062a\u062c\u0631\u0628\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">\u00a0\u0645\u0635\u0627\u062f\u0631 \u0648\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0634\u0631\u0648\u0639.<\/span><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ul>\n<li><span style=\"font-size: 18pt;\"><strong>\u0645\u0642\u062f\u0645\u0629<\/strong><\/span><\/li>\n<\/ul>\n<p><span style=\"font-size: 14pt;\">GraphQL \u0627\u0635\u0628\u062d\u062a \u0645\u062f\u0631\u062c\u0629 \u0636\u0645\u0646 \u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0627\u0644\u0627\u0634\u064a\u0627\u0621 \u0627\u0644\u062a\u064a \u064a\u062a\u062d\u062f\u062b \u0639\u0646\u0647\u0627 \u0648\u064a\u0633\u062a\u062e\u062f\u0645\u0647\u0627 \u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0645\u0637\u0648\u0631\u064a \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u062f\u0639\u0648\u0646\u0627 \u0646\u062a\u0639\u0631\u0641 \u0633\u0648\u064a\u0627\u064b \u0645\u0627\u0647\u064a GraphQL \u0648\u0645\u0627\u0647\u064a \u0641\u0627\u0626\u062f\u062a\u0647\u0627 \u0648\u0644\u0645\u0627\u0630\u0627\u064b \u0627\u0635\u0644\u0627\u064b \u0642\u062f \u0623\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627.<\/span><\/p>\n<ul>\n<li><span style=\"font-size: 14pt;\"><strong>\u0645\u0627\u0647\u064a GraphQL \u061f<\/strong><\/span><br \/>\n<span style=\"font-size: 14pt;\"> GraphQL \u0647\u064a \u0644\u063a\u0629 \u0627\u0633\u062a\u0639\u0644\u0627\u0645 , \u0646\u0645\u0637 \u0648\u0648\u0633\u064a\u0644\u0629 \u062a\u0648\u0627\u0635\u0644 \u0628\u064a\u0646 \u0627\u0644\u0640client \u0648\u0627\u0644\u0640server \u062a\u0645\u0643\u0646\u0643 \u0639\u0646 \u0637\u0631\u064a\u0642 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0645\u0646 \u0627\u0644\u0628\u062d\u062b \u0648 \u0625\u0636\u0627\u0641\u0629 \u0648\u062a\u0639\u062f\u064a\u0644 \u0648\u062d\u0630\u0641 \u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0646 \u0637\u0631\u064a\u0642 \u0627\u0644API \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\"><strong>\u0645\u0627\u0647\u064a \u0627\u0644\u0644\u063a\u0627\u062a \u0627\u0644\u0645\u062f\u0639\u0648\u0645\u0629 \u0627\u0648 \u0627\u0644\u062a\u064a \u064a\u0645\u0643\u0646\u0646\u064a \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0648\u062a\u0636\u0645\u064a\u0646 GraphQL \u0645\u0639\u0647\u0627\u061f<\/strong><\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u062a\u0639\u0627\u0645\u0644 \u0645\u0639\u00a0GraphQL \u0648\u062f\u0645\u062c\u0647\u0627 \u0645\u0639 \u0627\u064a \u0645\u0634\u0631\u0648\u0639 \u062a\u0639\u0645\u0644 \u0639\u0644\u064a\u0647 \u0641\u0647\u064a \u0644\u064a\u0633\u062a \u0645\u0642\u064a\u062f\u0629 \u0644\u0644\u063a\u0629 \u0627\u0648 \u062a\u0643\u0646\u0648\u0644\u0648\u062c\u064a\u0627 \u0627\u0648 \u062d\u062a\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0639\u064a\u0646\u0629.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0647\u0627 <a href=\"http:\/\/graphql.org\/code\/\">\u0645\u0646 \u0647\u0646\u0627<\/a>\u00a0.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\"><strong><strong>\u0645\u0627\u0647\u064a \u0645\u0645\u064a\u0632\u0627\u062a\u00a0GraphQL \u0648\u0644\u0645\u0627\u0630\u0627 \u0642\u062f \u0627\u062d\u062a\u0627\u062c \u0627\u0644\u0627 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0639\u0650\u0648\u0636\u0627\u064b \u0639\u0646 REST \u061f<\/strong><\/strong><\/span>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><span style=\"font-size: 14pt;\"><strong>&#8211; Ask Only for what you need &#8211; \u0627\u0637\u0644\u0628 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062d\u062a\u0627\u062c\u0647\u0627 \u0641\u0642\u0637<\/strong> \u0641\u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0647\u064a\u0643\u0644 \u062b\u0627\u0628\u062a \u0648\u0643\u0627\u0645\u0644 \u0645\u0646 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0639\u00a0GraphQL \u064a\u0643\u0648\u0646 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0627\u0643\u062b\u0631 \u0645\u0631\u0648\u0646\u0629 \u0641\u064a\u0645\u0643\u0646\u0643 \u0637\u0644\u0628 \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u062a\u064a \u062a\u0631\u064a\u062f \u0641\u0642\u0637. \u0641\u0645\u062b\u0644\u0627\u064b \u0644\u0648 \u0644\u062f\u064a \u0645\u0642\u0627\u0644\u0629 \u0648\u0628\u0647\u0627 \u062d\u0642\u0648\u0644 \u062b\u0627\u0628\u062a\u0629 \u0648\u0647\u064a <em>\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0648 \u0627\u0644\u0645\u062d\u062a\u0648\u0649 \u0648\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0648\u0627\u0644\u0643\u0627\u062a\u0628 \u0648\u0627\u0644\u0648\u0633\u0648\u0645 \u0627\u0644\u062f\u0644\u0627\u0644\u064a\u0629 <\/em>\u0648\u0641\u064a \u0648\u0627\u062c\u0647\u0629 \u0645\u0648\u0642\u0639\u064a \u0627\u0648 \u062a\u0637\u0628\u064a\u0642\u064a \u0627\u0646\u0627 \u0627\u062d\u062a\u0627\u062c \u0641\u0642\u0637 \u0639\u0646\u0648\u0627\u0646 \u0648\u0643\u0627\u062a\u0628 \u0627\u0644\u0645\u0642\u0627\u0644\u0629 \u0648\u0644\u0627 \u0627\u062d\u062a\u0627\u062c \u0627\u064a \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u062e\u0631\u0649 \u0641\u0633\u064a\u0643\u0648\u0646 \u0645\u0646 \u0627\u0644\u0627\u0641\u0636\u0644 \u0644\u064a \u0637\u0644\u0628 \u0647\u0630\u064a\u0646 \u0627\u0644\u062d\u0642\u0644\u064a\u0646 \u0641\u0642\u0637 \u0648\u0639\u062f\u0645 \u0627\u0631\u0633\u0627\u0644 \u0628\u0642\u064a\u062a \u0627\u0644\u062d\u0642\u0648\u0644 \u0645\u0646 \u0627\u0644\u0633\u064a\u0631\u0641\u0631 \u0644\u0627\u0646\u064a \u0644\u0627 \u0623\u062d\u062a\u0627\u062c\u0647\u0627 \u0648\u0644\u0646 \u0627\u0633\u062a\u062e\u062f\u0645\u0647\u0627.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">&#8211;\u00a0<strong>Strongly Typed<\/strong> &#8211;\u00a0 \u064a\u0648\u062c\u062f \u0648\u0635\u0641 \u062f\u0642\u064a\u0642 \u0644\u0627\u0646\u0648\u0627\u0639 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0647\u064a\u0643\u0644\u0647\u0627 \u0641\u0644\u0646 \u062a\u062d\u0635\u0644 \u0639\u0644\u0649 \u0646\u0648\u0639 \u063a\u064a\u0631 \u0627\u0644\u0630\u064a \u0642\u0645\u062a \u0628\u062a\u062d\u062f\u064a\u062f\u0647 \u0645\u0633\u0628\u0642\u0627\u064b.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\">&#8211; <strong>\u0627\u0644Nesting<\/strong> \u0641\u064a GraphQL \u064a\u0645\u0643\u0646\u0643 \u0639\u0645\u0644 nested query \u0648\u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0631\u062a\u0628\u0637\u0629 \u0628\u0627\u0644Request \u0648\u0627\u0631\u062c\u0627\u0639 \u0643\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u064a Response \u0648\u0627\u062d\u062f \u0648\u0641\u064a \u062d\u0627\u0644\u0629 \u0627\u0646\u0643 \u0637\u0644\u0628\u062a\u0647\u0627 \u0641\u0642\u0637, \u0633\u0646\u0648\u0636\u062d\u0647\u0627 \u0623\u0643\u062b\u0631 \u0628\u0645\u062b\u0627\u0644 \u0644\u0627\u062d\u0642\u0627\u064b.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong><span style=\"font-size: 18pt;\">GraphQL vs REST<\/span><\/strong><\/li>\n<li>\n<ul>\n<li><span style=\"font-size: 14pt;\"><strong>&#8211; \u0645\u0642\u0627\u0631\u0646\u0629 \u0628REST \u0647\u0644 \u0627\u0644\u0641\u0631\u0642 \u0643\u0628\u064a\u0631\u061f<\/strong><\/span><br \/>\n<span style=\"font-size: 14pt;\"> &#8211; &#8211; REST \u0648 GrahpQL \u0645\u062e\u062a\u0644\u0641\u0627\u0646 \u0643\u0644\u064a\u0627\u064b \u0648\u0643\u0644\u0627\u0647\u0645\u0627 \u064a\u062a\u0628\u0639 \u0627\u0633\u0644\u0648\u0628 \u0627\u0648 \u0646\u0645\u0637 \u0645\u062e\u062a\u0644\u0641 \u0641\u0641\u064a REST \u0627\u0646\u062a \u062a\u062d\u062f\u062f endpoint \u0644\u0643\u0644 \u0639\u0645\u0644\u064a\u0629 \u0645\u062b\u0644 \u062c\u0644\u0628 \u062c\u0645\u064a\u0639 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a, \u062c\u0644\u0628 \u0628\u064a\u0627\u0646 \u0648\u0627\u062d\u062f, \u062a\u062d\u062f\u064a\u062b , \u062d\u0630\u0641.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0627\u0646\u0645\u0627 \u0641\u064a GraphQL \u064a\u0648\u062c\u062f \u0644\u062f\u064a\u0643 endpoint \u0648\u062d\u064a\u062f\u0629 \u062a\u062a\u0648\u0627\u0635\u0644 \u0648\u062a\u0642\u0648\u0645 \u0628\u0643\u0644 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0645\u0646 \u062e\u0644\u0627\u0644\u0647\u0627 \u0648\u0645\u062d\u062a\u0648\u0649 \u0647\u0630\u0647 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0646\u0641\u0633\u0647 \u064a\u062e\u062a\u0644\u0641.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0641\u064a GraphQL \u064a\u0645\u0643\u0646 \u062a\u0636\u0645\u064a\u0646 \u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0627\u0644\u0627\u0634\u064a\u0627\u0621 \u0648\u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u064a\u0647\u0627 \u0641\u064a Request \u0648\u0627\u062d\u062f \u0628\u0639\u0643\u0633 REST \u0642\u062f \u062a\u062d\u062a\u0627\u062c \u0644\u0644\u0642\u064a\u0627\u0645 \u0628\u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0627\u0644Requests \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u0631\u064a\u062f\u0647\u0627.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\"><strong>&#8211; \u0625\u0630\u0627\u064b \u0647\u0644 GraphQL \u0623\u0641\u0636\u0644 \u0645\u0646 REST \u0648\u0647\u0644 \u064a\u062c\u0628 \u0627\u0646 \u0627\u062a\u0648\u0642\u0641 \u0639\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 REST \u0641\u0648\u0631\u0627\u064b \u0648\u0627\u0644\u062a\u0648\u062c\u0647 \u0644GraphQL \u061f<\/strong><\/span><br \/>\n<span style=\"font-size: 14pt;\"> &#8212; \u0628\u0627\u0644\u062a\u0623\u0643\u064a\u062f \u0644\u0627, \u0643\u0644 \u0637\u0631\u064a\u0642\u0629 \u0644\u0647\u0627 \u0645\u0645\u064a\u0632\u0627\u062a\u0647\u0627 \u0648\u0639\u064a\u0648\u0628\u0647\u0627 \u0639\u0644\u064a\u0643 \u0623\u0646 \u062a\u0642\u0631\u0623 \u0623\u0643\u062b\u0631 \u0639\u0646 \u0627\u0644\u0646\u0645\u0637\u064a\u0646 \u0648\u062a\u0641\u0647\u0645 \u0645\u0645\u064a\u0632\u0627\u062a \u0648\u0639\u064a\u0648\u0628 \u0643\u0644 \u0637\u0631\u064a\u0642\u0629 \u0648\u062a\u062e\u062a\u0627\u0631 \u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0627\u0646\u0633\u0628 \u0648\u0627\u0644\u0623\u0633\u0647\u0644 \u0644\u0645\u0634\u0631\u0648\u0639\u0643.<\/span><\/li>\n<li><span style=\"font-size: 14pt;\"><strong>&#8211; \u0647\u0644 \u064a\u0645\u0643\u0646\u0646\u064a \u0627\u0633\u062a\u062e\u062f\u0627\u0645 GraphQL \u0648 REST \u0641\u064a \u0622\u0646\u064d \u0648\u0627\u062d\u062f\u061f<br \/>\n<\/strong>&#8212; \u0646\u0639\u0645 \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0639\u0645\u0644 \u0628\u0647\u0645\u0627 \u0641\u064a \u0646\u0641\u0633 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0628\u062f\u0648\u0646 \u0627\u064a \u0645\u0634\u0627\u0643\u0644 \u062a\u0630\u0643\u0631.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 18pt;\"><strong>\u0645\u0641\u0627\u0647\u064a\u0645 \u0623\u0633\u0627\u0633\u064a\u0629 \u0644GraphQL :<\/strong><\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0641\u064a \u0627\u0644\u0628\u062f\u0627\u064a\u0629, \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0641\u064a GraphQL \u062a\u0646\u0642\u0633\u0645 \u0644\u0642\u0633\u0645\u064a\u0646 \u0627\u0633\u0627\u0633\u064a\u064a\u0646 \u0647\u0645\u0627 Queries \u0648 Mutations.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0627\u0644Queries \u0647\u064a \u0645\u0646 \u0627\u0633\u0645\u0647\u0627 \u062a\u0645\u062b\u0644 \u0627\u0644\u0625\u0633\u062a\u0639\u0644\u0627\u0645\u0627\u062a \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0641\u064a\u0647\u0627 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0628\u064a\u0646 client \u0648 server \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0639\u064a\u0646\u0629.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0627\u0646\u0645\u0627 \u0627\u0644 Mutations \u062a\u0645\u062b\u0644 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0645\u062a\u0639\u0642\u0644\u0629 \u0628\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u062b\u0644 \u0627\u0644\u0625\u0636\u0627\u0641\u0629 \u0648\u0627\u0644\u062d\u0630\u0641 \u0648\u0627\u0644\u062a\u0639\u062f\u064a\u0644.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0641\u0639\u0646\u062f\u0645\u0627 \u0646\u0637\u0644\u0628 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0639\u064a\u0646\u0629 \u0644\u0645\u0642\u0627\u0644\u0629 \u0645\u062b\u0644\u0627 \u0641\u0627\u0646\u0646\u0627 \u0646\u0634\u0626 query \u0648\u0639\u0646\u062f\u0645\u0627 \u0646\u0646\u0634\u0626 \u0627\u0648 \u0646\u0631\u063a\u0628 \u0641\u064a \u062a\u0639\u062f\u064a\u0644 \u0627\u0648 \u062d\u0630\u0641 \u0645\u0642\u0627\u0644\u0629 \u0641\u0627\u0646\u0646\u0627 \u0646\u0633\u062a\u062e\u062f\u0645 \u0627\u0644mutation.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\"><strong>\u0645\u0642\u062f\u0645\u0629 \u0639\u0645\u0644\u064a\u0629:<\/strong><\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0633\u0646\u0642\u0648\u0645 \u0628\u0639\u0645\u0644 \u0645\u0634\u0631\u0648\u0639 \u0635\u063a\u064a\u0631 \u0644\u064a\u0648\u0636\u062d \u0627\u0644\u0641\u0643\u0631\u0629 \u0648\u0627\u0644\u0645\u0641\u0627\u0647\u064a\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0644GraphQL<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0633\u0646\u0633\u062a\u062e\u062f\u0645:<\/span><br \/>\n<span style=\"font-size: 14pt;\"> Express.js \u0648\u0647\u0648 \u0625\u0637\u0627\u0631 \u0639\u0645\u0644 \u0645\u0628\u0646\u064a \u0639\u0644\u0649 Node.js \u0644\u0643\u062a\u0627\u0628\u0629 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0644\u0644\u0648\u064a\u0628.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">MongoDB \u0633\u0646\u0633\u062a\u062e\u062f\u0645\u0647\u0627 \u0643\u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0646 \u0637\u0631\u064a\u0642 \u0645\u0643\u062a\u0628\u0629 Mongoose.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\"><a href=\"https:\/\/www.apollographql.com\/docs\/apollo-server\/\">Apollo Server<\/a>\u00a0 \u0648\u0647\u0648\u00a0GraphQL server \u064a\u0645\u0643\u0646\u0643 \u0627\u0636\u0627\u0641\u062a\u0647 \u0648\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0645\u0639 node.js \u0648\u0627\u0637\u0627\u0631\u0627\u062a\u0647\u0627 \u0627\u0644\u0645\u062e\u062a\u0644\u0641\u0629 \u0648\u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0623\u062f\u0648\u0627\u062a GraphQL \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0627\u0644\u062a\u064a \u0633\u0646\u062d\u062a\u0627\u062c\u0647\u0627.<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-javascript\">npm i --save express mongoose graphql apollo-server-express graphql-tools\u00a0body-parser\u00a0\r\nnpm i --save-dev @babel\/node @babel\/preset-es2015 babel-plugin-inline-import-graphql-ast<\/code><\/pre>\n<blockquote dir=\"ltr\">\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0623\u0646\u0627 \u0633\u0623\u0641\u062a\u0631\u0636 \u0627\u0646 \u0644\u062f\u064a\u0643 \u0645\u0639\u0631\u0641\u0629 \u0633\u0627\u0628\u0642\u0629 \u0628\u0643\u064a\u0641\u064a\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 Node.js \u0648 MongodDB \u0641\u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0647\u0646\u0627 \u0639\u0646 \u062a\u0639\u0644\u0645 GraphQL \u0648\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627!.<\/span><\/p>\n<\/blockquote>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0644\u0646\u062a\u062e\u064a\u0644 \u0627\u0646 \u0644\u062f\u064a\u0646\u0627 \u0645\u062a\u062c\u0631\u0627\u064b \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0648\u0645\u0646\u062a\u062c\u0627\u062a \u0648\u0646\u0631\u064a\u062f \u0627\u0646 \u062a\u0643\u0645\u0646 \u0645\u0646 \u0625\u0636\u0627\u0641\u0629 \u0648 \u062d\u0630\u0641 \u0648\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u062a\u0646\u0635\u064a\u0641\u0627\u062a \u0643\u0628\u062f\u0627\u064a\u0629 \u0644\u0646\u0633\u062a\u0643\u0634\u0641 \u0645\u062d\u062a\u0648\u064a\u0627\u062a GraphQL:<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0623\u0648\u0644\u0627\u064b: \u0646\u0628\u062f\u0623 \u0628\u0627\u0644\u062a\u0635\u0646\u064a\u0641 \u0648\u0646\u0643\u062a\u0628 \u0627\u0644Schema \u0627\u0644\u062e\u0627\u0635\u0629:<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0646\u0646\u0634\u0626 \u0645\u0644\u0641 \u0648\u0646\u0633\u0645\u064a\u0647 category.model.js<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-javascript\">import mongoose from 'mongoose'\r\n\r\nconst categoryScheam = new mongoose.Schema({\r\n    title: {\r\n        type: String,\r\n        required: true\r\n    },\r\n    description: {\r\n        type: String\r\n    }\r\n})\r\n\r\n\r\nexport const Category = mongoose.model('category', categoryScheam);<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 14pt;\">\u0642\u0645\u0646\u0627 \u0628\u0627\u0646\u0634\u0627\u0621 Schema &#8220;\u0634\u0643\u0644 \u0627\u0648 \u062a\u0648\u0635\u064a\u0641 \u0644\u0634\u0643\u0644&#8221; \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u0648\u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u062d\u0642\u0644\u064a\u0646 \u0648\u0647\u0645\u0627 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u062a\u0635\u0646\u064a\u0641 \u0648\u0648\u0635\u0641 \u0644\u0647\u0630\u0627 \u0627\u0644\u062a\u0635\u0646\u064a\u0641, \u0625\u0644\u0649 \u0627\u0644\u0622\u0646 \u0627\u0644\u0627\u0645\u0648\u0631 \u0648\u0627\u0636\u062d\u0629 \u0648\u0628\u0633\u064a\u0637\u0629, \u0646\u062d\u062a\u0627\u062c \u0627\u0644\u0622\u0646 \u0644\u0625\u0646\u0634\u0627\u0621 \u0645\u0644\u0641 GraphQL \u0644\u0647\u0630\u0627 \u0627\u0644model \u0648\u062a\u0636\u0645\u064a\u0646 \u0639\u062f\u0629 \u0627\u0634\u064a\u0627\u0621 \u0628\u0647.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0646\u062d\u062a\u0627\u062c \u0644\u0625\u0646\u0634\u0627\u0621 \u0646\u0648\u0639 &#8220;type&#8221; \u0644\u0644 Category \u0644\u0643\u064a \u064a\u062a\u0639\u0631\u0641 \u0627\u0644GraphQL server \u0639\u0644\u064a\u0647<\/span><br \/>\n<span style=\"font-size: 18pt;\"> \u0641\u0645\u0627\u0647\u0648 \u0627\u0644<em><strong>Type<\/strong><\/em> \u0625\u0630\u0627\u064b \u061f<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0627\u0644Type \u0647\u0648 \u062a\u0648\u0635\u064a\u0641 \u0644\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0627\u0644Schema \u0627\u0644\u062a\u064a \u0646\u0646\u0634\u0626\u0647\u0627 \u0628\u0645\u0639\u0646\u0649 \u0627\u0648\u0636\u062d \u0646\u0639\u0631\u0641 \u0627\u0633\u0645\u0627\u0621 \u0627\u0644\u062d\u0642\u0648\u0644 \u0648\u0646\u0648\u0639\u0647\u0627 \u0648\u0647\u064a \u0647\u064a \u0645\u0637\u0644\u0648\u0628\u0629 \u062f\u0627\u0626\u0645\u0627\u064b \u0627\u0645 \u0627\u062e\u062a\u064a\u0627\u0631\u064a\u0629<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0646\u0641\u0633 \u0641\u0643\u0631\u0629 \u0627\u0644model \u0641\u064a mongoose \u0648\u0644\u0643\u0646 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u0631\u0629 \u0644\u0643\u064a \u064a\u062a\u0639\u0631\u0641 GraphQL \u0639\u0644\u064a\u0647\u0627.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0623\u0648\u0644\u0627\u064b: \u0623\u0646\u0634\u0626 \u0645\u0644\u0641 \u062c\u062f\u064a\u062f \u0641\u064a \u0646\u0641\u0633 \u0627\u0644\u0645\u062c\u0644\u062f \u0648\u0633\u0645\u0647 category.graphql.<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">type Category {\r\n    id: ID!\r\n    title: String!\r\n    description: String\r\n}<\/code><\/pre>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0643\u0645\u0627 \u0646\u0631\u0649 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0628\u0633\u064a\u0637 \u0643\u0644 \u0645\u0627\u0639\u0644\u064a\u0646\u0627 \u0641\u0639\u0644\u0647 \u0643\u062a\u0627\u0628\u0629 type \u0645\u062a\u0628\u0648\u0639\u0629 \u0628\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0630\u064a \u0646\u0631\u064a\u062f\u0647 \u0648\u0628\u0639\u062f\u0647 \u0646\u0641\u0635\u0644 \u0627\u0644\u062d\u0642\u0648\u0644<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0627\u0644\u062d\u0642\u0644 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0646\u0636\u0639 \u0628\u0639\u062f\u0647 \u0639\u0644\u0627\u0645\u0629 \u062a\u0639\u062c\u0628 &#8220;!&#8221; \u0625\u0646\u0645\u0627 \u0627\u0644\u062d\u0642\u0644 \u0627\u0644\u0625\u062e\u062a\u064a\u0627\u0631\u064a \u0644\u0627 \u0646\u0636\u0639 \u0634\u0626 \u0641\u064a \u0627\u062e\u0631\u0647.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0627\u0644\u0645\u062f\u0639\u0648\u0645\u0629 \u0641\u064a GraphQL \u0647\u064a <em><strong>Int, String, Float, Boolean<\/strong> <\/em>\u0648 \u0623\u062e\u064a\u0631\u0627\u064b <em><strong>ID<\/strong> <\/em>\u0648\u0627\u0644\u0630\u064a \u064a\u0643\u0648\u0646 \u0645\u0639\u0631\u0641\u0627\u064b \u0641\u0631\u064a\u062f\u0627\u064b \u0644\u0644\u0646\u0648\u0639.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u064a\u0645\u0643\u0646\u0643 \u062a\u0639\u0631\u064a\u0641 \u0623\u0646\u0648\u0627\u0639 \u0627\u062e\u0631\u0649 \u0648\u0633\u0623\u0630\u0643\u0631 \u0627\u0644\u0645\u0635\u062f\u0631 \u0625\u0630\u0627 \u0643\u0646\u062a \u0645\u0647\u062a\u0645 \u0628\u0647\u0627 \u0641\u064a \u0622\u062e\u0631 \u0627\u0644\u0645\u0642\u0627\u0644.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0627\u0644\u0640Type \u0633\u064a\u0643\u0648\u0646 \u0645\u062a\u0627\u062d\u0627\u064b \u0641\u0642\u0637 \u0639\u0646\u062f \u0639\u0645\u0644 Query \u0644\u0643\u0646 \u0639\u0646\u062f \u0627\u0646\u0634\u0627\u0621 \u0639\u0646\u0635\u0631 \u062c\u062f\u064a\u062f \u0627\u0648 \u062a\u062d\u062f\u064a\u062b \u0639\u0646\u0635\u0631 \u0633\u0646\u062d\u062a\u0627\u062c \u0627\u0644\u0649 \u062a\u0639\u0631\u064a\u0641 Input.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0633\u0646\u0639\u0631\u0641 Input \u0644\u0625\u062f\u062e\u0627\u0644 \u062a\u0635\u0646\u064a\u0641 \u062c\u062f\u064a\u062f \u0641\u064a \u0646\u0641\u0633 \u0627\u0644\u0645\u0644\u0641 \u0645\u0627\u0647\u064a \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u062a\u064a \u0646\u062a\u0648\u0642\u0639\u0647\u0627 \u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u061f<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">input newCategoryInput {\r\n    title: String!\r\n    description: String\r\n}<\/code><\/pre>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0643\u0645\u0627 \u0646\u0631\u0649 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0627\u0635\u0628\u062d \u0627\u0628\u0633\u0637 \u0644\u062f\u064a\u0646\u0627 \u062d\u0642\u0644\u064a\u0646 \u0646\u062a\u0648\u0642\u0639\u0645\u0647\u0627 \u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0647\u0645\u0627 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 &#8220;\u0625\u062c\u0628\u0627\u0631\u064a&#8221; \u0648\u0627\u0644\u0648\u0635\u0641 &#8220;\u0625\u062e\u062a\u064a\u0627\u0631\u064a&#8221;.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u062a\u0628\u0642\u0649 \u0644\u062f\u064a\u0646\u0627 \u0634\u064a\u0626\u064a\u0646 \u0644\u062a\u0639\u0631\u064a\u0641\u0647\u0645\u0627 \u0648\u0647\u0645\u0627 \u0627\u0644 Query \u0648 Mutation \u0648\u0627\u0644\u0630\u064a\u0646 \u0633\u0646\u0633\u062a\u062e\u062f\u0645 \u0641\u064a\u0647\u0645\u0627 \u0627\u0644inputs \u0648 \u0627\u0644types \u0627\u0644\u062a\u064a \u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u064a\u0641\u0647\u0627.<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">type Query {\r\n    categories: [Category]!\r\n    singleCategory(id: ID!): Category!\r\n}\r\n\r\ntype Mutation {\r\n    newCategory(category: newCategoryInput!): Category!\r\n}<\/code><\/pre>\n<blockquote>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0645\u0644\u0627\u062d\u0638\u0629: \u0647\u0646\u0627 \u0644\u0646 \u0646\u0643\u062a\u0628 \u0643\u0648\u062f \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0646\u0641\u0633\u0647\u0627 \u0628\u0644 \u0641\u0642\u0637 \u0646\u0639\u0631\u0641 \u0627\u0644\u0647\u064a\u0643\u0644 \u0627\u0644\u0627\u0633\u0627\u0633\u064a \u0644\u0647\u0627 \u0648\u0633\u0646\u0642\u0648\u0645 \u0628\u0643\u062a\u0627\u0628\u0629 \u0627\u0643\u0648\u0627\u062f\u0647\u0627 \u0641\u064a \u0627\u0644\u062e\u0637\u0648\u0629 \u0627\u0644\u0642\u0627\u062f\u0645\u0629 \u0639\u0646 \u0637\u0631\u064a\u0642 \u0627\u0644 resolvers .<\/span><\/p>\n<\/blockquote>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u064a\u0641 Query \u0648\u0627\u0644\u0630\u064a \u0633\u0646\u062d\u062f\u062f \u0645\u0646 \u062e\u0644\u0627\u0644\u0647 \u0627\u0644\u0623\u0634\u064a\u0627\u0621 \u0627\u0644\u062a\u064a \u064a\u0645\u0643\u0646\u0646\u0627 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u064a\u0647\u0627.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0623\u0648\u0644\u0627\u064b: categories \u0648\u0627\u0644\u062a\u064a \u0645\u0646 \u062e\u0644\u0627\u0644\u0647\u0627 \u0633\u0646\u062d\u0635\u0644 \u0639\u0644\u0649 \u0645\u0635\u0641\u0648\u0641\u0629 \u0645\u0646 \u0627\u0644\u0646\u0648\u0639 Category \u0648\u0644\u0646 \u062a\u0627\u062e\u0630 \u0627\u064a \u0645\u062f\u062e\u0644\u0627\u062a.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u062b\u0627\u0646\u064a\u0627\u064b: \u0639\u0631\u0641\u0646\u0627 \u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062a\u0635\u0646\u064a\u0641 \u0648\u062d\u064a\u062f \u0648\u0627\u0644\u0630\u064a \u0633\u064a\u0627\u062e\u0630 ID \u0627\u0644\u062a\u0635\u0646\u064a\u0641 \u0643\u0645\u062f\u062e\u0644 \u0648\u064a\u0631\u062c\u0639 \u0644\u0646\u0627 \u0639\u0646\u0635\u0631 \u0648\u0627\u062d\u062f \u0645\u0646 \u0646\u0648\u0639 Category.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0648\u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u0641 Mutation \u0648\u0647\u064a \u0633\u062a\u0643\u0648\u0646 \u0645\u0643\u0627\u0646 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0639\u0644\u0649 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0633\u0648\u0627\u0621 \u0627\u0636\u0627\u0641\u0629 \u062d\u0630\u0641 \u0627\u0648 \u062a\u0639\u062f\u064a\u0644.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0639\u0631\u0641\u0646\u0627 \u0637\u0631\u064a\u0642\u0629 \u0627\u0636\u0627\u0641\u0629 \u0639\u0646\u0635\u0631 \u062c\u062f\u064a\u062f \u0628\u0627\u0646\u0647 \u0633\u064a\u0627\u062e\u0630 \u0645\u062a\u063a\u064a\u0631 \u0627\u0633\u0645\u0647 category \u0643\u0645\u062f\u062e\u0644 \u0645\u0646 \u0646\u0648\u0639 newCategoryInput \u0648\u0639\u0646\u062f \u0627\u0646 \u0634\u0627\u0621 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u062c\u062f\u064a\u062f \u0633\u064a\u0631\u062c\u0639\u0647 \u0648\u0633\u064a\u0643\u0648\u0646 \u0645\u0646 \u0627\u0644\u0646\u0648\u0639 \u0627\u0644\u0627\u0635\u0644\u064a Category.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0648\u0644\u062a\u062d\u062f\u064a\u062b \u0639\u0646\u0635\u0631 \u0633\u0646\u062a\u0628\u0639 \u0646\u0641\u0633 \u0627\u0644\u0637\u0631\u064a\u0642\u0629.<\/span><\/p>\n<blockquote>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\"><strong>\u0645\u0644\u0627\u062d\u0638\u0629<\/strong>: \u062a\u0639\u0631\u064a\u0641 \u0627\u0644Query \u0648 \u0627\u0644Mutation \u0644\u0627\u0648\u0644 \u0645\u0631\u0629 \u0633\u064a\u0643\u0648\u0646 \u062a\u0639\u0631\u064a\u0641 \u0645\u0628\u062f\u0623\u0626 type query \u0648 \u0644\u0627\u0646\u0647 \u0645\u0633\u0645\u0648\u062d \u0644\u0643 \u0628\u062a\u0639\u0631\u064a\u0641\u0647 \u0645\u0631\u0647 \u0648\u0627\u062d\u062f\u0629 \u062e\u0644\u0627\u0644 \u062a\u0637\u0628\u064a\u0642\u0643 \u0641\u0639\u0646\u062f \u062a\u0639\u0631\u064a\u0641\u0647 \u0644model \u0622\u062e\u0631 \u0633\u064a\u0643\u0648\u0646 \u0625\u0636\u0627\u0641\u0629 \u0644\u0646\u0641\u0633 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 &#8220;extend type Query&#8221; \u0625\u0630\u0627 \u0644\u0645 \u062a\u0648\u0636\u062d \u0627\u0644\u0641\u0643\u0631\u0629 \u0631\u0627\u0642\u0628 \u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0647\u0646\u0627 \u0648\u0643\u064a\u0641 \u0633\u0646\u0639\u0631\u0641\u0647 \u0641\u064a \u0627\u0644 Product.<\/span><\/p>\n<\/blockquote>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0633\u064a\u0635\u0628\u062d \u0644\u062f\u064a\u0646\u0627 \u0645\u0644\u0641 \u0643\u0627\u0645\u0644 \u0628\u0647\u0630\u0627 \u0627\u0644\u0634\u0643\u0644:<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">type Category {\r\n    id: ID!\r\n    title: String!\r\n    description: String\r\n}\r\n\r\ninput newCategoryInput {\r\n    title: String!\r\n    description: String\r\n}\r\n\r\ntype Query {\r\n    categories: [Category]!\r\n    singleCategory(id: ID!): Category!\r\n}\r\ntype Mutation {\r\n    newCategory(category: newCategoryInput!): Category!\r\n}<\/code><\/pre>\n<p dir=\"rtl\"><span style=\"font-size: 18pt;\"><strong>\u062a\u0639\u0631\u064a\u0641 \u0627\u0644Resolvers :<\/strong><\/span><\/p>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0627\u0644\u0622\u0646 \u062d\u0627\u0646 \u0627\u0644\u0648\u0642\u062a \u0644\u0646\u0643\u062a\u0628 \u0627\u0644\u0640Resolver \u0641\u0645\u0627\u0647\u0648 \u0628\u0628\u0633\u0627\u0637\u0629\u061f<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0647\u0648 \u0643\u062a\u0627\u0628\u0629 \u0627\u0644implementation \u0644\u062a\u0639\u0631\u064a\u0641\u00a0 GraphQL \u0627\u0644\u0630\u064a \u0642\u0645\u0646\u0627 \u0628\u0643\u062a\u0627\u0628\u062a\u0647 \u0644\u0644\u062a\u0648<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0644\u0646\u0628\u062f\u0623<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0623\u0646\u0634\u0626\u0621 \u0645\u0644\u0641 category.resolvers.js<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-javascript\">import { Category } from '.\/category.model'\r\n\r\n\r\nconst getAllCategories = () =&gt; Category.find({}).exec()\r\n\r\nconst getOneById = id =&gt; Category.findById(id).exec()\r\n\r\n\r\n\r\nconst insertOne = (rootValue, { category }) =&gt; Category.create(category)\r\n\r\nexport const categoryResolvers = {\r\n    Query: {\r\n        categories: getAllCategories,\r\n        singleCategory: getOneById\r\n    },\r\n    Mutation: {\r\n        newCategory: insertOne\r\n    }\r\n}<\/code><\/pre>\n<p dir=\"rtl\"><span style=\"font-size: 14pt;\">\u0643\u0645\u0627 \u062a\u0631\u0649 \u0641\u0642\u062f \u0642\u0645\u0646\u0627 \u0628\u0627\u0633\u062a\u064a\u0631\u0627\u062f Category Model \u0627\u0644\u0630\u064a \u0642\u062f \u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u064a\u0641\u0647 \u0633\u0627\u0628\u0642\u0627\u064b \u0644\u0623\u0646\u0646\u0627 \u0633\u0646\u0633\u062a\u062e\u062f\u0645\u0647 \u0644\u0643\u062a\u0627\u0628\u0629 \u0627\u0644\u0640 implementation \u0644\u0645\u0627 \u0642\u0645\u0646\u0627 \u0628\u062a\u062d\u062f\u064a\u062f\u0647 \u0645\u0633\u0628\u0642\u0627\u064b, \u0648\u0633\u0646\u0642\u0648\u0645 \u0628\u062a\u0635\u062f\u064a\u0631 \u0645\u062a\u063a\u064a\u0631 \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0627\u0644\u062c\u0632\u0626\u064a\u0646 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u064a\u0646 \u0627\u0644\u0630\u064a\u0646 \u062a\u0643\u0644\u0645\u0646\u0627 \u0639\u0646\u0647\u0645\u0647\u0627 Query and Mutation.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0623\u0633\u0645\u0627\u0621 \u0627\u0644Properties \u0628\u062f\u0627\u062e\u0644 \u0643\u0644 \u0648\u0627\u062d\u062f\u0629 \u0645\u0646\u0647\u0645\u0627 \u064a\u062c\u0628 \u0627\u0646 \u062a\u0637\u0627\u0628\u0642 \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0645\u0644\u0641 GraphQL \u0627\u0644\u0630\u064a \u0642\u0645\u0646\u0627 \u0628\u062a\u0648\u0635\u064a\u0641\u0647 \u0633\u0627\u0628\u0642\u0627\u064b \u0641\u0645\u062b\u0644\u0627 \u0627\u0630\u0627 \u062d\u062f\u062f\u0646\u0627 \u0627\u0646 \u0627\u0644\u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u062a\u064a \u0633\u0646\u0633\u062a\u062e\u062f\u0645\u0647\u0627 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062c\u0645\u064a\u0639 \u0627\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a \u062a\u062f\u0639\u0649 categories \u0641\u0644\u0627\u064a\u0645\u0643\u0646\u0643 \u0647\u0646\u0627 \u062a\u0633\u0645\u064a\u062a\u0647\u0627 allCategories \u064a\u062c\u0628 \u0627\u0646 \u064a\u062a\u0637\u0627\u0628\u0642 \u0627\u0644\u0627\u0633\u0645\u064a\u0646, \u0644\u0643\u0646 \u0645\u062d\u062a\u0648\u0649 \u0627\u0644\u062f\u0627\u0644\u0629 \u0627\u0644\u062a\u064a \u0633\u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0627\u0644implementation \u0646\u0641\u0633\u0647 \u064a\u0645\u0643\u0646\u0643 \u0643\u062a\u0627\u0628\u062a\u0647\u0627 \u0645\u0628\u0627\u0634\u0631\u0629 \u0627\u0648 \u0627\u0633\u0646\u0627\u062f\u0647\u0627 \u0644\u0645\u062a\u063a\u064a\u0631 \u0627\u0648 \u0627\u0641\u0639\u0644 \u0645\u0627\u064a\u062d\u0644\u0648 \u0644\u0643 \u0641\u0639\u0644\u0647.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0627\u0644\u0622\u0646 \u0648\u0642\u062f \u0623\u0646\u0634\u0623\u0646\u0627 \u0645\u0644\u0641 \u0627\u0644GraphQL \u0648resolvers \u062f\u0639\u0648\u0646\u0627 \u0646\u062c\u0645\u0639\u0647\u0645\u0627 \u0645\u0639\u0627\u064b \u0644\u0639\u0645\u0644 schema \u0627\u0644\u0639\u0627\u0645\u0629 \u0644\u0625\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627.<\/span><\/p>\n<p><span style=\"font-size: 18pt;\"><strong>\u0625\u0646\u0634\u0627\u0621 Schema:<\/strong><\/span><\/p>\n<p><span style=\"font-size: 14pt;\"> \u0642\u0645 \u0628\u0625\u0646\u0634\u0627\u0621 schema.js<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-javascript\">import { makeExecutableSchema } from 'graphql-tools';\r\nimport * as categoryType from '.\/category\/category.graphql'\r\nimport { categoryResolvers } from '.\/category\/category.resolvers'\r\n\r\n\r\nexport const schema = makeExecutableSchema({\r\n    typeDefs: [\r\n        categoryType\r\n    ],\r\n    resolvers: categoryResolvers\r\n});\r\n<\/code><\/pre>\n<p><span style=\"font-size: 14pt;\">\u0641\u064a \u0627\u0644typeDefs \u0644\u0648 \u0644\u062f\u064a\u0646\u0627 \u0627\u0643\u062b\u0631 \u0645\u0646 type \u0633\u0646\u062c\u0644\u0647\u0645 \u0641\u064a \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629 \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0648\u0641\u064a \u0627\u0644resolvers \u0644\u0648 \u0643\u0627\u0646 \u0644\u062f\u064a\u0646\u0627 \u0627\u0643\u062b\u0631 \u0645\u0646 resolver \u0633\u0646\u062d\u062a\u0627\u062c \u0644\u062f\u0645\u062c\u0647\u0645 \u0639\u0646 \u0637\u0631\u064a\u0642 lodash.merge \u0644\u064a\u0635\u0628\u062d\u0648 object \u0648\u0627\u062d\u062f \u0648\u0644\u0643\u0646 \u0641\u064a \u062d\u0627\u0644\u062a\u0646\u0627 \u0644\u062f\u064a\u0646\u0627 resolvers \u0644\u0644 category \u0641\u0642\u0637 \u0641\u0644\u0627\u0646\u062d\u062a\u0627\u062c\u0647.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 18pt;\"><strong>\u0631\u0628\u0637 \u0627\u0644\u0640 Schema \u0628 Express:<\/strong><\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0627\u0644\u0627\u0646 \u0633\u0646\u0643\u062a\u0628 \u0627\u0644entry point \u0644\u062a\u0637\u0628\u064a\u0642\u0646\u0627 server.js \u0627\u0648 index.js \u0644\u0627\u064a\u0647\u0645:<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-javascript\">import express from 'express';\r\nimport bodyParser from 'body-parser';\r\nimport mongoose from 'mongoose';\r\nimport { graphiqlExpress, graphqlExpress } from 'apollo-server-express'\r\n\r\nimport { schema } from '.\/schema';\r\n\r\nconst app = express();\r\n\r\napp.use(bodyParser.urlencoded({ extended: true }))\r\napp.use(bodyParser.json())\r\nmongoose.Promise = global.Promise;\r\n\r\nmongoose.connect(`MongoDBURL`, (err) =&gt; {\r\n  if (err) console.log(err);\r\n  console.log('Connected TO MongoDB');\r\n});\r\n\r\napp.use('\/graphql', graphqlExpress({\r\n  schema: schema\r\n}));\r\n\r\napp.use('\/docs', graphiqlExpress({ endpointURL: '\/graphql' }));\r\n\r\n\r\napp.listen(3000, () =&gt; console.log('Your app is running on PORT 3000'));<\/code><\/pre>\n<p><span style=\"font-size: 14pt;\">\u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u064a\u0641 \u0627\u0644graphql endpoint \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 graphqlExpress \u0648\u0627\u0644\u062a\u064a \u0647\u064a\u00a0 graphql server \u0645\u0646 Apollo.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u0648\u0628\u0639\u062f\u0647\u0627 \u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u064a\u0641 \u0627\u0644interactive docs \u0648\u0647\u064a \u0639\u0628\u0627\u0631\u0629 \u0648\u0627\u062c\u0647\u0629 \u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u062a\u0641\u0627\u0639\u0644 \u0645\u0639 queries \u0648\u0627\u0644mutation \u0648\u062a\u062c\u0631\u064a\u0628\u0647\u0627.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u062c\u0627\u0647\u0632 \u0644\u062a\u062c\u0631\u064a\u0628 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c ! \ud83d\ude00<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"font-size: 18pt;\">\u062a\u062c\u0631\u0628\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u00a0<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\"> \u0628\u0639\u062f \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0633\u064a\u0631\u0641\u0631 \u0646\u062a\u0648\u062c\u0647 \u0644\u0640 &#8220;localhost:3000\/docs&#8221;<\/span><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/4TqaP9V.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/4TqaP9V.png\" alt=\"\" width=\"1019\" height=\"503\" \/><\/a><\/p>\n<p><span style=\"font-size: 14pt;\">\u0627\u0644\u062c\u0632\u0621 \u0627\u0644\u0645\u0648\u062c\u0648\u062f \u0641\u064a \u0627\u0644\u064a\u0633\u0627\u0631 \u0647\u0648 \u0627\u0644\u062c\u0632\u0621 \u0627\u0644\u0630\u064a \u0633\u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0648\u062a\u062c\u0631\u064a\u0628 \u0645\u0627\u0642\u0645\u062a \u0628\u0627\u0646\u0634\u0627\u0626\u0647 \u0641\u064a graphql server \u0627\u064a \u0633\u064a\u0645\u0643\u0646\u0646\u0627 \u0643\u062a\u0627\u0628\u0629 queries \u0627\u0648 \u0627\u0646\u0634\u0627\u0621 \u0639\u0646\u0627\u0635\u0631 \u062c\u062f\u064a\u062f\u0629 \u0627\u0648 \u063a\u064a\u0631\u0647.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0648\u0627\u0644\u062c\u0632\u0621 \u0627\u0644\u0645\u0648\u062c\u0648\u062f \u0641\u064a \u0627\u0644\u064a\u0633\u0627\u0631 \u0641\u064a \u0627\u0644\u0627\u0633\u0641\u0644 &#8220;Query Variable&#8221; \u0633\u064a\u0645\u0643\u0646\u0643 \u0645\u0646 \u0643\u062a\u0627\u0628\u0629 \u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0641\u064a \u0648\u0642\u062a \u0627\u0646\u0634\u0627\u0621 \u0627\u0648 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0639\u0646\u0627\u0635\u0631, \u0633\u0646\u062a\u0639\u0631\u0641 \u0639\u0644\u064a\u0647\u0627 \u0633\u0648\u064a\u0627\u064b.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0627\u0644\u062c\u0632\u0621 \u0627\u0644\u0627\u0648\u0633\u0637 \u0645\u0646 \u0627\u0644\u0634\u0627\u0634\u0629 \u0647\u0648 \u0633\u064a\u0638\u0647\u0631 \u0644\u0646\u0627 \u0646\u062a\u0627\u0626\u062c \u0645\u0627 \u0642\u0645\u0646\u0627 \u0628\u062a\u0646\u0641\u0630\u0647.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u0627\u0644\u062c\u0632\u0621 \u0627\u0644\u0623\u064a\u0645\u0646 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0627\u0644\u0636\u063a\u0637 \u0639\u0644\u0649 query \u0627\u0648 mutation \u0633\u064a\u0639\u0631\u0636 \u0644\u0643 \u062a\u0641\u0627\u0635\u064a\u0644\u0647\u0627 \u0645\u0627\u0647\u064a \u0627\u0644queries \u0627\u0648 \u0627\u0644mutations \u0627\u0644\u0645\u062a\u0648\u0641\u0631\u0629 \u0644\u062f\u064a\u0646\u0627 \u0648\u0645\u0627\u0647\u064a \u0627\u0644\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u0642\u0628\u0644\u0647\u0627.<\/span><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/uCYMEL6.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/uCYMEL6.png\" alt=\"\" width=\"1019\" height=\"503\" \/><\/a><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/xkq3j5O.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/xkq3j5O.png\" alt=\"\" width=\"1019\" height=\"503\" \/><\/a><\/p>\n<p><span style=\"font-size: 14pt;\">\u0633\u0646\u0642\u0648\u0645 \u0628\u0639\u0645\u0644 query \u0644\u062c\u0644\u0628 \u0643\u0644 \u0627\u0644categories \u0645\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0639\u0631\u0636 \u0627\u0644id \u0641\u0642\u0637 \u0648\u0633\u064a\u0643\u0648\u0646 \u0628\u0647\u0630\u0647 \u0627\u0644\u0635\u0648\u0631\u0629:<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">{\r\n  categories{\r\n    id\r\n  }\r\n}\r\n<\/code><\/pre>\n<p><span style=\"font-size: 14pt;\">\u0627\u0644query \u064a\u0645\u0643\u0646 \u0627\u0646 \u064a\u0643\u0648\u0646 \u0643\u0645\u0627 \u0648\u0636\u062d\u0646\u0627 \u0627\u0648<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">query {\r\n  categories{\r\n    id\r\n  }\r\n}<\/code><\/pre>\n<p><span style=\"font-size: 14pt;\">\u0627\u0648 \u0639\u0645\u0644 \u0627\u0633\u0645 \u0645\u062e\u0635\u0635 \u0644\u0647\u00a0<\/span><\/p>\n<pre class=\"line-numbers\" dir=\"ltr\"><code class=\"language-graphql\">query getAllCategories{\r\n  categories{\r\n    id\r\n  }\r\n}<\/code><\/pre>\n<p dir=\"ltr\"><a href=\"https:\/\/i.imgur.com\/ZBUix75.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/ZBUix75.png\" alt=\"\" width=\"1019\" height=\"503\" \/><\/a><\/p>\n<p><span style=\"font-size: 14pt;\">\u0628\u0627\u0644\u0637\u0628\u0639 \u0633\u062a\u0643\u0648\u0646 Array \u0641\u0627\u0631\u063a\u0629 \u0644\u0625\u0646\u0646\u0627 \u0644\u0645 \u0646\u0646\u0634\u0626 \u0627\u064a \u0639\u0646\u0635\u0631 \u0628\u0639\u062f.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> \u062f\u0639\u0648\u0646\u0627 \u0646\u0642\u0648\u0645 \u0628\u0625\u0646\u0634\u0627\u0621 \u0623\u0648\u0644 Category.<\/span><br \/>\n<a href=\"https:\/\/i.imgur.com\/sJK6e5c.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.imgur.com\/sJK6e5c.png\" alt=\"\" width=\"1019\" height=\"503\" \/><\/a><\/p>\n<p><span style=\"font-size: 14pt;\">\u0641\u064a \u0627\u0644\u0628\u062f\u0627\u064a\u0629 \u0628\u062f\u0623\u0646\u0627 \u0628\u0643\u0644\u0645\u0629 mutation \u0644\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0646\u0647 \u0639\u0645\u0644\u064a\u0629 \u0648\u0644\u064a\u0633\u062a query \u0648\u0628\u0639\u062f \u0630\u0644\u0643 \u0627\u0633\u0645 \u0644\u0644mutation \u0648\u0647\u0648 \u0627\u062e\u062a\u064a\u0627\u0631\u064a \u0642\u062f \u062a\u0643\u0648\u0646 \u0628\u062f\u0648\u0646 \u0627\u0633\u0645 \u0648\u0645\u0646 \u062e\u0644\u0627\u0644 \u0627\u0644parameter \u0642\u0645\u0646\u0627 \u0628\u062a\u0639\u0631\u064a\u0641 \u0645\u062a\u063a\u064a\u0631 \u0627\u0633\u0645\u0647 input \u0648\u062d\u062f\u062f\u0646\u0627 \u0646\u0648\u0639\u0647 \u0645\u0646 \u0646\u0648\u0639 newCategoryInput \u0648\u0647\u0648 \u0645\u0637\u0644\u0648\u0628 \u0643\u0645\u0627 \u062d\u062f\u062f\u0646\u0627 \u0633\u0627\u0628\u0642\u0627 \u0641\u064a graphQL.<\/span><br \/>\n<span style=\"font-size: 14pt;\">\u0648\u0641\u064a \u062f\u0627\u062e\u0644 \u0627\u0644mutation \u0646\u0633\u062a\u062f\u0639\u064a \u0627\u0644mutation \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0648\u0647\u064a \u062a\u0627\u062e\u0630 \u0645\u062a\u063a\u064a\u0631 \u0627\u0633\u0645\u0647 category \u0648\u0646\u062d\u062f\u062f \u0627\u0646\u0647 \u0647\u0648 \u0627\u0644\u0645\u062a\u063a\u064a\u0631 input<\/span><br \/>\n<span style=\"font-size: 14pt;\">\u0648\u0641\u064a \u0627\u0644\u0623\u0633\u0641\u0644 \u0641\u064a Query Variables \u0646\u0646\u0634\u0626 \u0627\u0644variable \u0648\u0646\u0643\u062a\u0628 \u0627\u0644\u0642\u064a\u0645 \u0648\u0628\u0639\u062f\u0647\u0627 \u0646\u0646\u0641\u0630 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0648\u0633\u0646\u062c\u062f \u0627\u0646\u0647\u0627 \u0627\u0631\u062c\u0639\u062a \u0644\u0646\u0627 id , title \u0643\u0645\u0627 \u062d\u062f\u062f\u0646\u0627.\u00a0<\/span><br \/>\n<span style=\"font-size: 14pt;\">\u0631\u0627\u0626\u0639!.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 18pt;\"><strong>\u0645\u0635\u0627\u062f\u0631<\/strong><\/span><br \/>\n<span style=\"font-size: 14pt;\">\u0647\u0646\u0627 \u0642\u062f \u0648\u0635\u0644\u0646\u0627 \u0644\u0646\u0647\u0627\u064a\u0629 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0627\u0644 \u0648\u0642\u062f \u0643\u0627\u0646\u062a \u0645\u0642\u062f\u0645\u0629 \u0628\u0633\u064a\u0637\u0629 \u0639\u0646 GraphQL \u0644\u0645 \u0646\u062a\u0637\u0631\u064a\u0642 \u0627\u0644\u0649 \u0643\u0644 \u0635\u063a\u064a\u0631\u0629 \u0648\u0643\u0628\u064a\u0631\u0629 \u0641\u0645\u0627\u0632\u0627\u0644 \u064a\u0648\u062c\u062f \u0627\u0644\u0643\u062b\u064a\u0631 \u0644\u062a\u0639\u0644\u0645\u0647.<\/span><br \/>\n<span style=\"font-size: 14pt;\">\u0625\u0630\u0627 \u0643\u0646\u062a \u0645\u0647\u062a\u0645 \u0628\u0645\u0639\u0631\u0641\u0629 \u0627\u0644\u0645\u0632\u064a\u062f \u0639\u0646 GraphQL \u064a\u0645\u0643\u0646\u0643 \u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0647\u0645 <a href=\"https:\/\/graphql.org\/\">\u0645\u0646 \u0647\u0646\u0627<\/a>\u00a0\u0648 \u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0631\u0633\u0645\u064a \u0627\u0644\u062e\u0627\u0635 \u0628<a href=\"https:\/\/www.apollographql.com\/docs\/apollo-server\/\">Apollo\u00a0<\/a>.<br \/>\n\u0625\u0630\u0627 \u0643\u0646\u062a \u062a\u0631\u063a\u0628 \u0641\u064a \u0645\u0639\u0631\u0641\u0629 \u0643\u064a\u0641\u064a\u0629 \u0625\u0646\u0634\u0627\u0621 \u0646\u0648\u0639 \u062c\u062f\u064a\u062f \u0644\u0644\u062d\u0642\u0648\u0644 <a href=\"https:\/\/www.apollographql.com\/docs\/graphql-tools\/scalars.html\">\u0645\u0646 \u0647\u0646\u0627<\/a>.<\/span><\/p>\n<blockquote><p><span style=\"font-size: 14pt;\">\u064a\u0645\u0643\u0646\u0643 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 <a href=\"http:\/\/bit.ly\/2GpigRr\">\u0645\u0646 \u0647\u0646\u0627<\/a>\u00a0.<\/span><br \/>\n<span style=\"font-size: 14pt;\">\u0648\u0644\u0648 \u0643\u0646\u062a \u062a\u0628\u062d\u062b \u0639\u0646 \u0645\u0634\u0631\u0648\u0639 \u0645\u062a\u0642\u062f\u0645 \u0642\u0644\u064a\u0644\u0627\u064b \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u064a\u0645\u0643\u0646\u0643 \u0627\u0633\u062a\u0643\u0634\u0627\u0641 \u0645\u0634\u0631\u0648\u0639\u064a \u0639\u0644\u0649 <a href=\"http:\/\/bit.ly\/2Il60hi\">GitHub<\/a>.<\/span><\/p><\/blockquote>\n<p><span style=\"font-size: 14pt;\">\u0623\u062a\u0645\u0646\u0649 \u0627\u0646 \u062a\u0643\u0648\u0646 \u0627\u0633\u062a\u0641\u062f\u062a \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0627\u0644.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0633\u0645 \u0627\u0644\u0644\u0647 \u0627\u0644\u0631\u062d\u0645\u0646 \u0627\u0644\u0631\u062d\u064a\u0645 &nbsp; \u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0642\u0627\u0644: \u00a0\u00a0\u0645\u0642\u062f\u0645\u0629. \u00a0GraphQL vs REST. \u00a0\u0645\u0641\u0627\u0647\u064a\u0645 \u0623\u0633\u0627\u0633\u064a\u0629 \u0641\u064a GraphQL . \u00a0\u062a\u0639\u0631\u064a\u0641 \u0627\u0644 Type \u0648 Input. \u00a0\u062a\u0639\u0631\u064a\u0641 \u0627\u0644 resolvers. \u00a0\u0639\u0645\u0644 \u0627\u0644\u0640 Schema. \u00a0\u0631\u0628\u0637 Schema \u0645\u0639 Express . \u062a\u062c\u0631\u0628\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642. \u00a0\u0645\u0635\u0627\u062f\u0631 \u0648\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0634\u0631\u0648\u0639. &nbsp; \u0645\u0642\u062f\u0645\u0629 GraphQL \u0627\u0635\u0628\u062d\u062a \u0645\u062f\u0631\u062c\u0629 \u0636\u0645\u0646 \u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0627\u0644\u0627\u0634\u064a\u0627\u0621 \u0627\u0644\u062a\u064a \u064a\u062a\u062d\u062f\u062b \u0639\u0646\u0647\u0627 \u0648\u064a\u0633\u062a\u062e\u062f\u0645\u0647\u0627 \u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0645\u0637\u0648\u0631\u064a \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u062f\u0639\u0648\u0646\u0627 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[26,25],"class_list":["post-488","post","type-post","status-publish","format-standard","hentry","category-2","tag-apollo","tag-graphql"],"aioseo_notices":[],"views":1825,"_links":{"self":[{"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=\/wp\/v2\/posts\/488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=488"}],"version-history":[{"count":41,"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=\/wp\/v2\/posts\/488\/revisions"}],"predecessor-version":[{"id":526,"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=\/wp\/v2\/posts\/488\/revisions\/526"}],"wp:attachment":[{"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/magdy.dk\/arblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}