{"id":336484,"date":"2022-08-02T15:00:59","date_gmt":"2022-08-02T15:00:59","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=336484"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=336484","title":{"rendered":"<span>Humane API REST Protocol<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u044f\u2026 \u043a\u0430\u043a \u0441\u043a\u0443\u043b\u044c\u043f\u0442\u043e\u0440, \u043e\u0442\u0440\u0435\u0437\u0430\u044e \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043b\u0438\u0448\u044c \u0441\u0430\u043c\u0443\u044e \u043c\u044f\u043a\u043e\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0439 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043a\u0440\u0443\u0433 \u0437\u0430\u0434\u0430\u0447. \u0412\u043e\u0442 \u043b\u0438\u0448\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u044e \u0432\u0435\u0449\u0435\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habhub.hyoo.ru\/#!author=nin-jin\/repo=HabHub\/article=39\" rel=\"nofollow noopener noreferrer\">MarkedText<\/a> \u2014 \u0441\u0442\u0440\u043e\u0439\u043d\u044b\u0439 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 (\u0443\u0431\u0438\u0439\u0446\u0430 MarkDown).<\/li>\n<li><a href=\"https:\/\/github.com\/nin-jin\/slides\/tree\/master\/tree\" rel=\"nofollow noopener noreferrer\">Tree<\/a> \u2014 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u0443\u0431\u0438\u0439\u0446\u0430 JSON \u0438 XML).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437 \u043c\u044b \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/API\" rel=\"nofollow noopener noreferrer\">API<\/a>, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u0431\u0440\u0430\u0442\u044c \u043a\u0440\u043e\u0432\u0430\u0432\u0443\u044e \u043f\u0435\u043b\u0435\u043d\u0443 \u0441 \u0433\u043b\u0430\u0437 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u043e\u0432 \u0438 \u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0437\u043e\u043b\u0438 \u0441 \u043f\u0430\u043b\u044c\u0446\u0435\u0432 \u0431\u044d\u043a\u0435\u043d\u0434\u0435\u0440\u043e\u0432..<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Architecture<\/strong><\/td>\n<td>\u2705REST<\/td>\n<td>\u2705REST<\/td>\n<td>\u274cRPC<\/td>\n<\/tr>\n<tr>\n<td>Common <strong>uri query string<\/strong> compatible<\/td>\n<td>\u2b55Back<\/td>\n<td>\u2705Full<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Single line<\/strong> query<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Pseudo-static<\/strong> compatible<\/td>\n<td>\u2b55Back<\/td>\n<td>\u2b55Partial<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Same model<\/strong> of request and response<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>File name<\/strong> compatible<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Web Tools<\/strong> Friendly<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>filtering<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>sorting<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>slicing<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>aggregation<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td><strong>Deep<\/strong> fetch<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td><strong>Limited<\/strong> logic<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td><strong>Metadata<\/strong> query<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td><strong>Idempotent<\/strong> requests<\/td>\n<td>\u2705Full<\/td>\n<td>\u2b55Partial<\/td>\n<td>\u274cUndef<\/td>\n<\/tr>\n<tr>\n<td><strong>Normalized<\/strong> response<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"application-programming-interface\">Application Programming Interface<\/h1>\n<p>  <\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430: <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A3%D0%B4%D0%B0%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80\" rel=\"nofollow noopener noreferrer\">RPC<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/REST\" rel=\"nofollow noopener noreferrer\">REST<\/a> \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435..<\/p>\n<p>  <\/p>\n<h2 id=\"remote-procedure-call\">Remote Procedure Call<\/h2>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0432\u044b\u0437\u0432\u0430\u0442\u044c. \u041f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0435\u0451 \u0438\u043c\u044f \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u0421\u0435\u0440\u0432\u0435\u0440 \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b RPC \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/xmlrpc.com\/\" rel=\"nofollow noopener noreferrer\">XML RPC<\/a><\/li>\n<li><a href=\"https:\/\/www.jsonrpc.org\/\" rel=\"nofollow noopener noreferrer\">JSON RPC<\/a><\/li>\n<li><a href=\"https:\/\/graphql.org\/\" rel=\"nofollow noopener noreferrer\">GraphQL<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0431\u0449\u0435\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0441 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430\u043c\u0438, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043a\u043e\u0434\u0435 (<a href=\"https:\/\/docs.github.com\/en\/graphql\/reference\/mutations\" rel=\"nofollow noopener noreferrer\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a>). \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u044b \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043e \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u0448\u0442\u0443\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u043a\u0441\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"representational-state-transfer\">REpresentational State Transfer<\/h2>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0438\u0434\u0435\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c (\u0440\u0435\u0441\u0443\u0440\u0441\u044b), \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/URI\" rel=\"nofollow noopener noreferrer\">URI<\/a>) \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043d\u0438\u043c\u0438 (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/HTTP#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B\" rel=\"nofollow noopener noreferrer\">\u043c\u0435\u0442\u043e\u0434\u044b<\/a>). \u0427\u0438\u0441\u043b\u043e \u0442\u0438\u043f\u043e\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 RPC, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b REST \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/webdav.org\/\" rel=\"nofollow noopener noreferrer\">WebDAV<\/a><\/li>\n<li><a href=\"https:\/\/www.odata.org\/\" rel=\"nofollow noopener noreferrer\">OData<\/a><\/li>\n<li><a href=\"https:\/\/jsonapi.org\/\" rel=\"nofollow noopener noreferrer\">JSON:API<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u043e REST \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0447\u0451\u0442\u043a\u0443\u044e \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0443\u043c\u0435\u044e\u0449\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 (\u0434\u0430\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438) \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 (<a href=\"https:\/\/http.hyoo.ru\/#!uri=https%3A%2F%2Fapi.github.com%2Frepos%2Fnin-jin%2Fhabhub%2Fissues\/headers=Accept%3A%20application%2Fvnd.github.raw%2Bjson\" rel=\"nofollow noopener noreferrer\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a>), \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u043c\u0438 \u043a\u0430\u043a \u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c, \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0442\u0434.<\/p>\n<p>  <\/p>\n<h2 id=\"synchronization-protocols\">Synchronization protocols<\/h2>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0430 \u0443\u0437\u043b\u044b \u0441\u0435\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0435\u043b\u044c\u0442\u0430\u043c\u0438 \u0432\u043d\u0435\u0441\u0451\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u0438 \u0432\u0438\u0434\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b \u0434\u043b\u044f \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u043e\u0444\u0444\u043b\u0430\u0439\u043d\u0435. \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432\u2026 \u043c\u043d\u0435 \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0430\u043a\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0451\u0442 \u0432\u0435\u0441\u044c \u043c\u0438\u0440. \u041d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u0447\u0451\u043c-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u2014 REST..<\/p>\n<p>  <\/p>\n<h1 id=\"architecture\">Architecture<\/h1>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0434\u0435\u0442\u0430\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f..<\/p>\n<p>  <\/p>\n<h2 id=\"pseudo-static\">Pseudo-Static<\/h2>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e REST \u2014 \u044d\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u0440\u043e URI \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0432\u0438\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/users\/jin\/chats\/123\/messages\/456\/likes.json \/organizations\/hyoo\/chats\/123\/messages\/456\/likes.json<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0441\u0443\u0440\u0441. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043d\u0438\u043c\u0438 \u2014 \u0432\u044b\u0431\u043e\u0440 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0451\u043c \u043f\u0443\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443 \u043d\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0431\u044b\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043d\u043e \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043b\u0430\u0439\u043a\u0438 \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0437\u043d\u0430\u0435\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0447\u0430\u0442\u0430 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u0440\u0430\u0437\u0434\u0443\u0442\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438\u0437-\u0437\u0430 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043b\u0438\u0431\u043e \u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043b\u0438\u0431\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0447\u0430\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0430 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u043f\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0443\u0432\u0438\u0434\u0438\u0442 \u0438\u0437\u0434\u0435\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 404. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0437\u0430\u043f\u0430\u0440\u0438\u043b\u0441\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043d\u0430\u0434 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u044e\u043c\u0438\u0440\u0443\u044f: <strong>URI \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043d\u043e \u043d\u0435 \u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438.<\/strong><\/p>\n<p>  <\/p>\n<h2 id=\"create-read-update-delete\">Create Read Update Delete<\/h2>\n<p>  <\/p>\n<p>\u041d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e REST \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e CRUD, \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e CRUD \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 HTTP \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>Create<\/code> \u2014 <code>POST<\/code><\/li>\n<li><code>Read<\/code> \u2014 <code>GET<\/code><\/li>\n<li><code>Update<\/code> \u2014 <code>PUT<\/code>\/<code>PATCH<\/code><\/li>\n<li><code>Delete<\/code> \u2014 <code>DELETE<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0423 CRUD \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432..<\/p>\n<p>  <\/p>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u043c<\/strong>. \u0415\u0441\u043b\u0438 \u043d\u0430\u0448 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0442\u0430\u043a\u0441\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u043b \u043f\u0443\u0442\u0438, \u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a <a href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/442762\/\">\u043f\u0440\u0438\u0435\u0437\u0434\u0443 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u043a\u0441\u0438<\/a>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b UI, \u0447\u0442\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0441\u0442\u044b\u043b\u0438 \u0441 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u0438\u0445 \u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u0412\u0432\u0438\u0434\u0443 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0435\u0449\u0451 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0430 \u043b\u0435\u0442\u0443, \u043a\u043e\u0433\u0434\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u0440\u0438\u0448\u043b\u0451\u0442 \u0441\u0432\u043e\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430.<\/p>\n<p>  <\/p>\n<p><strong>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043e\u0447\u043d\u0443\u044e \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c<\/strong>. \u0418 \u0435\u0441\u043b\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0438\u043a\u0443\u0434\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0430 \u043b\u0438\u0448\u044c \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <strong>\u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u043b\u0438\u0448\u044c \u0434\u0432\u0443\u0445 HTTP-\u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/strong>:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>GET<\/code> \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f.<\/li>\n<li><code>PATCH<\/code> \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0436\u043d\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f (fetch plan), \u0442\u0430\u043a \u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (<code>PATCH<\/code>, \u043d\u043e \u043d\u0435 <code>PUT<\/code>).<\/p>\n<p>  <\/p>\n<h2 id=\"real-time\">Real Time<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0445\u043e\u0434 HTTP \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c\/\u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0435 \u0437\u0430\u0432\u0430\u043b\u0438\u0432\u0430\u044f \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0432\u0438\u0434\u0430 &#171;\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0447\u0442\u043e?&#187;. \u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435 WebSocket \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435. \u0410 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u0432\u0430\u0436\u0434\u044b, HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/573\/33e\/4a4\/57333e4a424f3ce7bdbc42c2869760eb.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/573\/33e\/4a4\/57333e4a424f3ce7bdbc42c2869760eb.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c <code>GET<\/code> \u0438 <code>PATCH<\/code>, \u043f\u0440\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u043f\u043e WebSocket \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0435\u0449\u0451 \u043f\u0430\u0440\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>WATCH<\/code> \u2014 \u044d\u0442\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 <code>GET<\/code>, \u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430.<\/li>\n<li><code>FORGET<\/code> \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"keys\">Keys<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Natural_key\" rel=\"nofollow noopener noreferrer\">\u041d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447<\/a>, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u043e\u043d \u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/li>\n<li><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D1%83%D1%80%D1%80%D0%BE%D0%B3%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BB%D1%8E%D1%87\" rel=\"nofollow noopener noreferrer\">\u0421\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447<\/a>, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041e\u043d \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d, \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0442\u0443\u0442 \u2014 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c. <strong>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c<\/strong>, \u0438\u043d\u0430\u0447\u0435 \u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447. \u0418 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043d\u044b\u0439.<\/p>\n<p>  <\/p>\n<h2 id=\"model\">Model<\/h2>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0433\u0440\u0430\u0444, \u0433\u0434\u0435 \u0443\u0437\u043b\u0430\u043c\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u0438\u043f\u043e\u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0430 \u0440\u0451\u0431\u0440\u0430\u043c\u0438 \u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0435\u043d \u0442\u0438\u043f\u043e\u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0430\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u044f\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0447\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u043e \u0434\u043b\u044f \u0440\u0451\u0431\u0435\u0440 \u0432 \u0433\u0440\u0430\u0444\u043e\u0432\u044b\u0445 \u0421\u0423\u0411\u0414. \u0427\u0430\u0441\u0442\u044c \u2014 \u0432 \u043d\u0435\u044f\u0432\u043d\u043e\u043c, \u0447\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0421\u0423\u0411\u0414. \u0410 \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u043d\u0430 \u043b\u0435\u0442\u0443.<\/p>\n<p>  <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0430 \u0442\u0435\u043c\u0443 \u0433\u0440\u0430\u0444\u043e\u0432\u044b\u0445 \u0421\u0423\u0411\u0414 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habhub.hyoo.ru\/#!author=nin-jin\/repo=HabHub\/article=3\" rel=\"nofollow noopener noreferrer\">\u041d\u0435 \u043f\u043e\u0440\u0430 \u043b\u0438 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0432\u0430\u043b\u043a\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438?<\/a><\/li>\n<li><a href=\"https:\/\/habhub.hyoo.ru\/#!author=nin-jin\/repo=HabHub\/article=9\" rel=\"nofollow noopener noreferrer\">\u041f\u0438\u043b\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u043d\u0435 \u043f\u0440\u0438\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044f\u0441\u044c \u043a \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 API \u043e\u0442 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u0438 \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c\u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043e\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0443\u044e, \u043d\u043e \u0433\u0438\u0431\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>Entity<\/code> \u2014 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/li>\n<li><code>Type<\/code> \u2014 \u0442\u0438\u043f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0435\u0451 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043a\u0430\u043a\u043e\u0433\u043e \u043e\u043d\u0438 \u0442\u0438\u043f\u0430.<\/li>\n<li><code>ID<\/code> \u2014 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0435\u0451 \u0442\u0438\u043f\u0430.<\/li>\n<li><code>URI<\/code> \u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0432\u0441\u0435\u0433\u043e API, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0441\u044b\u043b\u043a\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e URI API.<\/li>\n<li><strong>\u0421\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c URI \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444<\/strong>.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"fetch-plan\">Fetch Plan<\/h2>\n<p>  <\/p>\n<p>\u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 REST API \u0440\u0435\u0441\u0443\u0440\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0430\u043d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 <a href=\"https:\/\/api.github.com\/search\/issues?q=label:HabHub%20is:open&amp;sort=updated&amp;per_page=100\" rel=\"nofollow noopener noreferrer\">\u043f\u043e\u0438\u0441\u043a \u0447\u0435\u0440\u0435\u0437 GitHub API<\/a>, \u0432\u044b\u0434\u0430\u0447\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f <a href=\"https:\/\/habhub.hyoo.ru\/\" rel=\"nofollow noopener noreferrer\">\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044e<\/a> \u043f\u0430\u0440\u044b \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442. \u042d\u0442\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f <em>overfetch<\/em>.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u0440\u0435\u0441\u0443\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u043e \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0440\u0430\u0434\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 GitHub \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435. \u0410 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442, \u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 N \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 <a href=\"https:\/\/api.github.com\/users\/nin-jin\" rel=\"nofollow noopener noreferrer\">\u0432\u0441\u0435\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/a>. \u042d\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f <em>underfetch<\/em>.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0442\u043e \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e. \u0412 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u044b\u043b \u043a\u0443\u0440\u044c\u0451\u0437\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u043f\u043a\u0430\u0445, \u0442\u0435 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u0434\u043e \u043a\u043e\u0440\u043d\u044f. \u0418 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u043e \u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0430\u043f\u043e\u043a, \u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e \u043e\u0442\u0432\u0435\u0442 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442. \u0410 \u044d\u0442\u043e \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0441\u0435\u0442\u044c, \u0442\u0430\u043a \u0435\u0449\u0451 \u0438 Internet Explorer \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0434\u0430\u043b \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 JSON.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435\u043c <em>\u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/em> \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2)\" rel=\"nofollow noopener noreferrer\">\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u0435\u0440\u0435\u0432\u043e\u043c<\/a>. \u041e\u0441\u043e\u0431\u0443\u044e \u043f\u0438\u043a\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0434\u0430\u0432\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0430\u0437\u044b \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u043d\u043e \u0434\u043b\u044f \u0432\u044b\u0434\u0430\u0447\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0434\u0435\u043b\u0430\u043b \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 GitHub \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0434\u043d\u044b\u0439 GraphGL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043d\u043e \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e. \u041c\u044b \u0436\u0435 \u0440\u0435\u0448\u0438\u043c \u0438\u0445 \u0432\u0441\u0435. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>Partial Fetch<\/strong> \u2014 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u044f \u043d\u0430\u0434\u043e \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0442\u044c.<\/li>\n<li><strong>Recursive Fetch<\/strong> \u2014 \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u043a\u0430\u043a\u0438\u0435 \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430\u0434\u043e \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0442\u044c.<\/li>\n<li><strong>Filtered Fetch<\/strong> \u2014 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043a\u0430\u043a \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0438, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.<\/li>\n<li><strong>Normalized Output<\/strong> \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u0440\u0435\u0437\u0430 \u0433\u0440\u0430\u0444\u0430 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0431\u0435\u0437 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<h1 id=\"query\">Query<\/h1>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0431\u043b\u0438\u0436\u0435 \u043a \u0434\u0435\u043b\u0443, \u043f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a\u043e \u0433\u0440\u0430\u0444\u0443 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 REST \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b..<\/p>\n<p>  <\/p>\n<h2 id=\"applications\">Applications<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412 \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d URI.<\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 DSL \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f URI \u0441 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c URI \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440.<\/li>\n<li>\u0412 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u043b\u043e\u0433\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li>\u0412 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u043b\u043e\u0433\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u043e\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/li>\n<li>\u0412\u044b\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u0439\u043b\u0430. \u0425\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438.<\/li>\n<li>\u0422\u043e\u0442 \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0438 \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/li>\n<li>URI \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0432 \u0447\u0430\u0442\u0435, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0442\u0434.<\/li>\n<li>URI \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 XML \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0443\u0437\u043b\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"special-symbols\">Special Symbols<\/h2>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u043e \u0432 \u043d\u0438\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u044b. \u0412 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 URL \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043b\u044e\u0431\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">: @ \/ $ + ; , ? &amp; = #<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u043d\u0438 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>encodURIComponent<\/code>, \u043d\u043e \u043d\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>encodeURI<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u0437 \u043d\u0438\u0445 \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>: \/ ?<\/code> \u2014 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.<\/li>\n<li><code>:<\/code> \u2014 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0443\u0442\u0438 URL.<\/li>\n<li><code>\/<\/code> \u2014 \u0440\u044f\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0443\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u0440\u043e\u0439 \u043d\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e.<\/li>\n<li><code>? #<\/code> \u2014 \u0440\u044f\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 URL.<\/li>\n<li><code>#<\/code> \u2014 \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442.<\/li>\n<li><code>&amp;<\/code> \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u0443\u043a\u043b\u044e\u0436\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 XML: <code>&amp;amp;<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0440\u044f\u0434 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">@ $ + ; , =<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0441\u043a\u043e\u0431\u043e\u043a. \u041e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0430 \u0440\u043e\u043b\u044c \u0441\u043a\u043e\u0431\u043e\u043a \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u043a\u0438\u0435 \u0432\u0438\u0434\u044b \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0441\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>()<\/code> \u2014 \u043d\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 (<code>encodeURIComponent<\/code>), \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442.<\/li>\n<li><code>&lt;><\/code> \u2014 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0432 Chrome Dev Tools, \u0447\u0442\u043e \u0440\u0435\u0437\u043a\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u044c. \u041d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u0443\u043a\u043b\u044e\u0436\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 XML.<\/li>\n<li><code>{}<\/code> \u2014 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043e <code>?<\/code> \u0432 Chrome, \u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u043b\u0435 <code>?<\/code>, \u0442\u043e \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e.<\/li>\n<li><code>[]<\/code> \u2014 \u043d\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0438 \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432, \u043d\u0438 \u0432 \u0438\u0445 \u043b\u043e\u0433\u0430\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412\u043e\u043e\u0431\u0449\u0435 \u0441\u0443\u043f\u0435\u0440!<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u043c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">@ $ + ; , = [ ]<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">~ ! * ( ) _ - ' .<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0445 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u043b\u0438\u0448\u044c \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043f\u0440\u0438\u0442\u044b\u043a \u043a \u043d\u0438\u043c \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0442\u043e\u0436\u0435 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u043d\u0438 \u043d\u0435 \u0441\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"syntax\">Syntax<\/h2>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0431\u044b\u043b \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c, \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041d\u043e \u043d\u0435 \u0432 \u0443\u0449\u0435\u0440\u0431 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0451 \u0442\u0438\u043f \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u041d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 <code>=<\/code>:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%3Djin\" rel=\"nofollow noopener noreferrer\"><code>person=jin<\/code><\/a><\/p><\/blockquote>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 URI, \u0430 \u0435\u0433\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430. \u0415\u0441\u043b\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URI API <code>https:\/\/example.org\/<\/code>, \u0442\u043e \u043f\u043e\u043b\u043d\u044b\u0439 URI \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<blockquote><p><code>https:\/\/example.org\/person=jin<\/code><\/p><\/blockquote>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u0432 \u0432\u044b\u0434\u0430\u0447\u0435 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>article=123<\/code>, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 URI \u0442\u043e\u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f \u0432:<\/p>\n<p>  <\/p>\n<blockquote><p><code>https:\/\/example.org\/article=123<\/code><\/p><\/blockquote>\n<p>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 URI \u0445\u043e\u0440\u043e\u0448\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435, \u043d\u043e \u0438 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0433\u0440\u0430\u0444\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043d\u044b\u0435 <em>API Enpoints<\/em>, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 API.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043d\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u0432\u0441\u0435? \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person\" rel=\"nofollow noopener noreferrer\"><code>person<\/code><\/a><\/p><\/blockquote>\n<p>\u0414\u0430, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0438\u043c\u044f \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u0438\u043f, \u0430 \u0438\u043c\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u044f. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f <code>;<\/code>, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%3Barticle%3Bsection\" rel=\"nofollow noopener noreferrer\"><code>person;article;section<\/code><\/a><\/p><\/blockquote>\n<p>\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e \u0442\u0430\u043a\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043b\u0438\u0448\u044c \u0441\u043f\u0438\u0441\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u043d\u0435 \u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0432\u044b\u0434\u0430\u0447\u0435:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bage%5D%3Barticle%5Btitle%3Bcontent%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;age];article[title;content]<\/code><\/a><\/p><\/blockquote>\n<p>\u0421\u043a\u043e\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%3Djin%5Bname%3Bage%3Bfriend%5Bname%3Bage%5D%5D\" rel=\"nofollow noopener noreferrer\"><code>person=jin[name;age;friend[name;age]]<\/code><\/a><\/p><\/blockquote>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0438\u043c\u0435\u043d\u0430 \u0438 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u0441\u0435\u0445 \u0435\u0433\u043e \u0434\u0440\u0443\u0437\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c ID, \u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u043d \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e ID. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043d\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0432\u0443\u0448\u0435\u043a:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female]<\/code><\/a><\/p><\/blockquote>\n<p>\u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443-\u043b\u0438\u0431\u043e \u043f\u043e\u043b\u044e \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0430 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u0435\u0432\u0443\u0448\u043a\u0438 \u0442\u0443\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u0438 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043d\u043e \u0438 \u043f\u043e\u043b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0434 <code>female<\/code> \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 <code>trap<\/code>, \u0438 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435 \u043f\u043b\u043e\u0445\u043e \u043f\u043e \u0432\u044b\u0434\u0430\u0447\u0435 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c. \u0422\u0430\u043a \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0435\u0439, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0445 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u044b\u043c, \u0442\u0430\u043a \u0438 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u043c. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043b\u0438\u0448\u044c \u043d\u0435\u0437\u0430\u043c\u0443\u0436\u043d\u0438\u0445 \u0434\u0435\u0432\u0443\u0448\u0435\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>!=<\/code>:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female;status!=married]<\/code><\/a><\/p><\/blockquote>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u043e \u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>@<\/code>. \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0438\u0434\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0441 \u043d\u0438\u0436\u043d\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439: <code>lo@<\/code><\/li>\n<li>\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0441 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439: <code>@hi<\/code><\/li>\n<li>\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0441 \u043e\u0431\u0435\u0438\u043c\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438: <code>lo@hi<\/code><\/li>\n<li>\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0441 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438: <code>val@val<\/code> \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e <code>val<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u0430, \u043b\u044e\u0431\u043e\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d. \u0423\u0442\u043e\u0447\u043d\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u043b\u0438\u0448\u044c \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0434\u0435\u0432\u0443\u0448\u043a\u0438:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%3Bage%3D18%40%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female;status!=married;age=18@]<\/code><\/a><\/p><\/blockquote>\n<p>\u0410 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u043e\u0434\u0438\u043d, \u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 <code>,<\/code>. \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043c\u043e\u043b\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0435\u0432\u0443\u0448\u043a\u0438 \u043d\u0430\u0441 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%2Cengaged%3Bage%3D18%40%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female;status!=married,engaged;age=18@]<\/code><\/a><\/p><\/blockquote>\n<p>\u0412\u044b\u0434\u0430\u0447\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u043c \u043f\u043e\u043b\u044f\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>+<\/code> \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e \u0438 <code>-<\/code> \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u043e\u043b\u043e\u0434\u044b\u0445 \u0434\u0435\u0432\u0443\u0448\u0435\u043a, \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0442\u0430\u043b\u0430\u043d\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%2Cengaged%3B-skills%3B%2Bage%3D18%40%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female;status!=married,engaged;-skills;+age=18@]<\/code><\/a><\/p><\/blockquote>\n<p>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e\u043b\u0435\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0438\u0445 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u041a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0441\u0442\u0430\u043b \u2014 \u0442\u043e\u0433\u043e \u0438 \u0442\u0430\u043f\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u0435\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c URI \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0435\u0441\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0441 <code>_<\/code>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0441 \u0447\u0438\u0441\u043b\u043e\u043c \u0442\u0430\u043b\u0430\u043d\u0442\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043b\u0438\u0448\u044c \u043f\u043e\u043b\u0435 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u044d\u0442\u0438 \u0442\u0430\u043b\u0430\u043d\u0442\u044b, \u043d\u043e \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0438\u0445 \u0432\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c, \u0442\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u0447\u0438\u0441\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>_len<\/code>:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%2Cengaged%3B-_len%5Bskill%5D%3B%2Bage%3D18%40%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female;status!=married,engaged;-_len[skill];+age=18@]<\/code><\/a><\/p><\/blockquote>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043c\u044f \u043f\u043e\u043b\u044f, \u0430 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441, \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u044b\u0434\u0430\u0447\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0451\u043d \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u0435\u0432\u0443\u0448\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0442\u043e\u0447\u043d\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u043b\u0438\u0448\u044c \u0442\u0430\u043b\u0430\u043d\u0442\u044b \u043f\u043e \u0432\u043e\u0441\u043f\u0438\u0442\u0430\u043d\u0438\u044e \u0434\u0435\u0442\u0435\u0439:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%2Cengaged%3B-_len%5Bskill%5Bkind%3Dkids%5D%5D%3B%2Bage%3D18%40%5D\" rel=\"nofollow noopener noreferrer\"><code>person[name;phone;sex=female;status!=married,engaged;-_len[skill[kind=kids]];+age=18@]<\/code><\/a><\/p><\/blockquote>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <code>_sum<\/code>, <code>_min<\/code>, <code>_max<\/code>. \u0418 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c\u0441\u044f. \u041a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0430\u043c\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0435\u0439 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435 \u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a, \u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0432\u044b\u0435 20, \u0442\u043e \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c \u2014 <code>_num<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u043e\u043c\u0435\u0440 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 (\u0441\u0430\u043c \u043d\u043e\u043c\u0435\u0440 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f):<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5B_num%3D0%4020%3Bname%3Bphone%3Bsex%3Dfemale%3Bstatus!%3Dmarried%2Cengaged%3B-_len%5Bskill%5Bkind%3Dkids%5D%5D%3B%2Bage%3D18%40%5D\" rel=\"nofollow noopener noreferrer\"><code>person[_num=0@20;name;phone;sex=female;status!=married,engaged;-_len[skill[kind=kids]];+age=18@]<\/code><\/a><\/p><\/blockquote>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0435\u0441\u044c \u044f\u0437\u044b\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432\u0435\u0441\u044c\u043c\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c. \u0415\u0441\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c URI \u0432\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0441\u0435\u0431\u044f \u2014 \u0441\u0440\u043e\u0447\u043d\u043e \u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435 <a href=\"https:\/\/t.me\/nin_jin\" rel=\"nofollow noopener noreferrer\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u044b<\/a>. \u0410 \u0441 \u0442\u0435\u043c\u0438 \u043a\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c..<\/p>\n<p>  <\/p>\n<h2 id=\"back-compatibility\">Back Compatibility<\/h2>\n<p>  <\/p>\n<p>\u0421\u0438\u043c\u0432\u043e\u043b <code>;<\/code> \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u043d \u0438\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0438 <code>&amp;<\/code>, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043b\u044f \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Query_string\" rel=\"nofollow noopener noreferrer\">QueryString<\/a>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442, \u043f\u043b\u0430\u0432\u043d\u043e \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 QueryString \u043d\u0430 HARP:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=search%3Dharp%26offset%3D0%26limit%3D10\" rel=\"nofollow noopener noreferrer\"><code>search=harp&amp;offset=0&amp;limit=10<\/code><\/a><\/p><\/blockquote>\n<p>\u041d\u043e \u0438 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 <code>\/<\/code> \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0438 pathname:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=users%2Fjin%2Fcomments%3D123\" rel=\"nofollow noopener noreferrer\"><code>users\/jin\/comments=123<\/code><\/a><\/p><\/blockquote>\n<p>\u0410 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0449\u0451 \u0438 <code>?<\/code> \u0441 <code>#<\/code>, \u043c\u043e\u0436\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=users%2Fjin%2Fcomments%3Fsince%3D2022-08-04%23scrollTop%3D9000\" rel=\"nofollow noopener noreferrer\"><code>users\/jin\/comments?since=2022-08-04#scrollTop=9000<\/code><\/a><\/p><\/blockquote>\n<p>  <\/p>\n<h2 id=\"typescript-api\">TypeScript API<\/h2>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0448\u044c \u0441 \u043d\u0438\u043c\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a \u043a\u043b\u0430\u0441\u0441\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/hyoo-ru\/harp.hyoo.ru\/blob\/master\/from\/string\/string.ts\" rel=\"nofollow noopener noreferrer\">$hyoo_harp_from_string<\/a> \u2014 \u041f\u0430\u0440\u0441\u0438\u0442 HARP Query \u0432 JSON<\/li>\n<li><a href=\"https:\/\/github.com\/hyoo-ru\/harp.hyoo.ru\/blob\/master\/to\/string\/string.ts\" rel=\"nofollow noopener noreferrer\">$hyoo_harp_to_string<\/a> \u2014 \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u0442 HARP Query \u0438\u0437 JSON<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const harp = $hyoo_harp_from_string( 'person[+age=18@;+name;article[title];_num=20@29]' ) \/\/ { \/\/     person: { \/\/         age: { \/\/             '+': true, \/\/             '=': [[ '18', '' ]], \/\/         }, \/\/         name: { \/\/             '+': true, \/\/         }, \/\/         article: { \/\/             title: {}, \/\/         }, \/\/         _num: { \/\/             '=': [[ '20', '29' ]], \/\/         }, \/\/     }, \/\/ }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"javascript\">const ADULT = [ 18, '' ] const page = 2 const nums = [ page * 10, ( page + 1 ) * 10 - 1 ]  const uri = $hyoo_harp_to_string({     person: {         age: {             '+': true,             '=': [ ADULT ],         },         name: {             '+': true,         },         article: {             title: {},         },         _num: {             '=': [ nums ],         },     }, }) \/\/ person[+age=18@;+name;article[title];_num=20@29]<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043b\u0430\u0431\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0412 \u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043f\u0440\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0433\u0440\u0430\u0444\u0430. \u041d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/hyoo-ru\/harp.hyoo.ru\/tree\/master\/scheme\" rel=\"nofollow noopener noreferrer\">$hyoo_harp_scheme<\/a>, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043d\u0430 <a href=\"https:\/\/github.com\/hyoo-ru\/mam_mol\/tree\/master\/data\" rel=\"nofollow noopener noreferrer\">$mol_data<\/a>:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const Str = $mol_data_optional( $hyoo_harp_scheme( {}, String ) ) const Int = $mol_data_optional( $hyoo_harp_scheme( {}, Number ) )  const Article = $hyoo_harp_scheme({     title: Str,     content: Int, })  const Person = $hyoo_harp_scheme({     name: Str,     age: Int,     article: $mol_data_optional( Article ), })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c URI \u0438 \u0442\u0430\u0439\u043f \u0447\u0435\u043a\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u0448\u0438\u0431\u0451\u043c\u0441\u044f \u0432 \u0438\u043c\u0435\u043d\u0430\u0445, \u0438 \u0434\u0430\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043c \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ person[name;age;article[title]] const query = Person.build({     person: {         name: {},         age: {},         article: {             title: {},         },     }, })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 URI \u043c\u044b \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 JSON:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const query = Person.parse( 'person[+age=18@;+name;article[title];_num=20@29]' )  const article_fetch1 = Object.keys( query.person.article ) \/\/ \u274c article may be absent const article_fetch2 = Object.keys( query.person.article ?? {} ) \/\/ \u2705 const follower_fetch = Object.keys( query.follower ?? {} ) \/\/ \u274c Person don't have follower<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e JSON \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u043a\u043e\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const person1 = Person({}) \/\/ \u2705 const person2 = Person({ name: {} }) \/\/ \u2705 const person3 = Person({ title: {} }) \/\/ \u274c compile-time error: Person don't have title const person4 = Person({ _num: [[ Math.PI ]] }) \/\/ \u274c run-time error: isn't integer const person5: typeof Person.Value = person2 \/\/ \u2705 same type<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c TS \u0441\u0445\u0435\u043c\u0443 \u0438\u0437 \u0435\u0451 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0435\u0451 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  <\/p>\n<h1 id=\"response\">Response<\/h1>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0433\u0440\u0430\u0444, \u0430 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0434\u0433\u0440\u0430\u0444, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0431\u0435\u0437 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0430 \u043d\u0430 4 \u0443\u0440\u043e\u0432\u043d\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>Type<\/code> \u2014 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0438\u043f\u044b \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0445\u0441\u044f \u0432 \u043d\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0442\u0432\u0435\u0442\u0430.<\/li>\n<li><code>ID<\/code> \u2014 \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0438\u043f\u0430.<\/li>\n<li><code>Field<\/code> \u2014 \u0418\u043c\u044f \u043f\u043e\u043b\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li><code>Value<\/code> \u2014 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f, \u0442\u0438\u043f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u043e\u0439 \u0438 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c URI \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u0418\u043c\u0435\u043d\u043d\u043e URI, \u0430 \u043d\u0435 ID, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u0434\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u0430, \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438 \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u043e\u0441 (<code>_query<\/code>) \u0432 \u0442\u043e\u043c \u0432\u0438\u0434\u0435, \u043a\u0430\u043a \u0435\u0433\u043e \u043f\u043e\u043d\u044f\u043b \u0441\u0435\u0440\u0432\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043c\u043e\u0433 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u0451 \u043b\u0438 \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u043a\u043e\u043c\u0443 \u0447\u0438\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HTTP \u043a\u043e\u0434\u044b \u0434\u043b\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u0410 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c, \u0447\u0442\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 (<code>_error<\/code>).<\/p>\n<p>  <\/p>\n<h2 id=\"format\">Format<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/en.wikipedia.org\/wiki\/Content_negotiation\" rel=\"nofollow noopener noreferrer\">Content Negotiation<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043c \u0435\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.w3.org\/XML\/\" rel=\"nofollow noopener noreferrer\">JSON<\/a>: <code>Accept: application\/json<\/code> (\u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439)<\/li>\n<li><a href=\"https:\/\/github.com\/nin-jin\/tree.d\" rel=\"nofollow noopener noreferrer\">Tree<\/a>: <code>Accept: application\/x-harp.tree<\/code> (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439)<\/li>\n<li><a href=\"https:\/\/www.json.org\/json-en.html\" rel=\"nofollow noopener noreferrer\">XML<\/a>: <code>Accept: application\/xml<\/code> (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u043f\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430:<\/p>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/harp.hyoo.ru\/#!query=person%5Bname%3Bage%3Barticle%5Btitle%3Bauthor%5Bname%3B_len%5Bfollower%5Bvip%3Dtrue%5D%5D%5D%5D%5D%3Bme\" rel=\"nofollow noopener noreferrer\"><code>person[name;age;article[title;author[name;_len[follower[vip=true]]]]];me<\/code><\/a><\/p><\/blockquote>\n<p>  <\/p>\n<h3 id=\"json\">JSON<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"json\">{     \"_query\": {         \"person[name;age;article[title;author[name;_len[follower[vip=true]]]]]\": {             \"reply\": [                 \"person=jin\",             ],         },         \"me\": {             \"reply\": [                 \"person=jin\",             ],         },     },     \"person\": {         \"jin\": {             \"name\": \"Jin\",             \"age\": { \"_error\": \"Access Denied\" },             \"article\": [                 \"article=123\",                 \"article=456\",             ],             \"_len\": {                 \"follower[vip=true]\": 100500,             },         }     },     \"article\": {         \"123\": {             \"title\": \"HARP\",             \"author\": [                 \"person=jin\",             ],         },         \"456\": { \"_error\": \"Corrupted Database\" },     }, }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423 JSON, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/nin-jin\/slides\/tree\/master\/tree\" rel=\"nofollow noopener noreferrer\">\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432<\/a>, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443.<\/li>\n<li>\u041c\u043d\u043e\u0433\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0443\u043c\u0430.<\/li>\n<li>\u041b\u0438\u0431\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0438\u0442, \u043b\u0438\u0431\u043e \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e..<\/p>\n<p>  <\/p>\n<h3 id=\"tree\">Tree<\/h3>\n<p>  <\/p>\n<pre><code class=\"plaintext\">_query     \\person[name;age;article[title;author[name;_len[follower[vip=true]]]]]         reply \\person=jin     \\me         reply \\person=jin person     \\jin         name \\Jin         age _error \\Access Denied         article             \\article=123             \\article=456         _len             \\follower[vip=true]                 100500 article     \\123         title \\HARP         author \\person=jin     \\456         _error \\Corrupted Database<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0432\u044b\u0434\u0430\u0447\u0430 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0430\u044f \u0438 \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u0448\u0443\u043c\u043b\u0451\u043d\u043d\u0430\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0451 \u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u0438\u0437-\u0437\u0430 \u043e\u0434\u043d\u043e\u0439 \u0435\u0433\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438..<\/p>\n<p>  <\/p>\n<h3 id=\"xml\">XML<\/h3>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;?xml-stylesheet type=\"text\/xsl\" href=\"_harp.xsl\"?> &lt;harp>     &lt;_query id=\"person[name;age;article[title;author[name;_len[follower[vip=true]]]]]\">         &lt;reply>person=jin&lt;\/reply>     &lt;\/_query>     &lt;_query id=\"me\">         &lt;reply>person=jin&lt;\/reply>     &lt;\/_query>     &lt;person id=\"person=jin\">         &lt;name>Jin&lt;\/name>         &lt;age _error=\"Access Denied\" \/>         &lt;article>article=123&lt;\/article>         &lt;article>article=456&lt;\/article>         &lt;_len id=\"person=jin\/follower[vip=true]\">100500&lt;\/_len>     &lt;\/person>     &lt;article id=\"article=123\">         &lt;title>HARP&lt;\/title>         &lt;author>person=jin&lt;\/author>     &lt;\/article>     &lt;article id=\"article=456\" _error=\"Corrupted Database\" \/> &lt;\/harp><\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 XSL \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435. \u041e\u043d \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 URI \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u043d\u0435 \u0433\u043e\u043b\u044b\u0439 \u0434\u0430\u043c\u043f XML \u0438\u043b\u0438 JSON, \u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f HTML \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438, \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 URI \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c: \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u2014 \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043c \u0436\u0435, \u0433\u0434\u0435 \u0438 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0443\u0434\u0430-\u0441\u044e\u0434\u0430 (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/HATEOAS\" rel=\"nofollow noopener noreferrer\">HATEOAS<\/a> \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043a\u0430\u0445).<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/nin-jin.github.io\/harp\" rel=\"nofollow noopener noreferrer\">\u0422\u0443\u0442<\/a> \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435! \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0411\u044b\u0441\u0442\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (UI, Tree, JSON, XML).<\/li>\n<li>\u0412\u0441\u0435 URI \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438.<\/li>\n<li>\u041f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u044b\u0434\u0430\u0447\u0435.<\/li>\n<li>\u0414\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435\u043c.<\/li>\n<li>\u0422\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/li>\n<li>\u041a\u043d\u043e\u043f\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c).<\/li>\n<li>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u043e\u043b\u0435\u0439, \u0432\u0437\u044f\u0442\u044b\u0435 \u0438\u0437 \u0441\u0445\u0435\u043c\u044b.<\/li>\n<\/ul>\n<p>  <\/p>\n<h1 id=\"create--update\">Create &amp; Update<\/h1>\n<p>  <\/p>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: \u043e\u0442\u043a\u0443\u0434\u0430 \u0438 \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0442\u043e \u0438 \u0442\u0443\u0434\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u043b\u0438\u0448\u044c \u0442\u0435 \u043f\u043e\u043b\u044f, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0430 \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u0434\u0440\u044f\u0434. \u0412\u0441\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442, \u043b\u0438\u0431\u043e \u043d\u0435\u0442. \u0412 URI \u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0435\u0440\u043d\u0443\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0448\u043b\u0451\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043d\u0430\u0442\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0443 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0441\u0430, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e \u043e\u0431\u043e\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">PATCH \/person=jin,john[ballance;transfer]  transfer     \\12345         from \\john         to \\jin         amount 9000<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">person     \\jin         ballance 100500         transfer             \\transfer=34567             \\transfer=12345     \\john         ballance -100500         transfer             \\transfer=23456             \\transfer=12345<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">PATCH \/  message     \\12345         chat \\123         body \\Do you like HARP?         attachment \\poll=67890 poll     \\67890         option             \\Yes             \\No             \\There is no third way<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0443\u0441\u0442\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438.<\/p>\n<p>  <\/p>\n<h1 id=\"comparison\">Comparison<\/h1>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u043d\u0430\u0448 \u0433\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u043c\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430\u043c\u0438..<\/p>\n<p>  <\/p>\n<h2 id=\"architecture-1\">Architecture<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Architecture<\/strong><\/td>\n<td>\u2705REST<\/td>\n<td>\u2705REST<\/td>\n<td>\u274cRPC<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>REST \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435. \u041d\u0435 \u0434\u0430\u0440\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 \u043d\u0435\u0451 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f HTTP.<\/p>\n<p>  <\/p>\n<h2 id=\"common-query-string\">Common Query String<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Common <strong>uri query string<\/strong> compatibile<\/td>\n<td>\u2b55Back<\/td>\n<td>\u2705Full<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>HARP \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. OData \u0436\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u0446\u0435\u043d\u043e\u0439..<\/p>\n<p>  <\/p>\n<p>\u0412\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435 OData \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">GET \/pullRequest?$filter=state%20eq%20closed%20or%20state%20eq%20merged&amp;$orderby=repository%20asc%2CupdateTime%20desc&amp;$select=state%2Crepository%2Fname%2Crepository%2Fprivate%2Crepository%2Fowner%2Fname%2CupdateTime %2Cauthor%2Fname&amp;$skip=20&amp;$top=10&amp;$format=json<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u0439 HARP \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">GET \/pullRequest[state=closed,merged;+repository[name;private;owner[name]];-updateTime;author[name];_num=20@30]<\/code><\/pre>\n<p>  <\/p>\n<p>GraphQL \u0436\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c, \u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u043e\u0434\u0438\u043d get-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<p>  <\/p>\n<h2 id=\"single-line\">Single Line<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Single line<\/strong> query<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>GraphQL, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u0442\u043e\u0433\u0434\u0430 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">GET \/graphq?query=%7B%20request%20%7B%20pullRequests(%20state%3A%20%5B%20closed%2C%20merged%20%5D%2C%20order%3A%20%7B%20repository%3A%20asc%2C%20updateTime%3A%20desc%20%7D%2C%20offset%3A%2020%2C%20limit%3A%2010%20)%20%7B%20id%20state%20updateTime%20repository%20%7B%20name%20private%20owner%20%7B%20id%20name%20%7D%20%7D%20updateTime%20author%20%7B%20id%20name%20%7D%20%7D%20%7D%20%7D<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0451 \u0436\u0435 \u043e\u043d \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043d\u0438\u043a\u0430\u043a \u0438\u043d\u0430\u0447\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">POST \/graphql  {     request {         pullRequests(             state: [ closed, merged ],             order: { repository: asc, updateTime: desc },             offset: 20,             limit: 10,         ) {             id             state             updateTime             repository {                 name                 private                 owner {                     id                     name                 }             }             updateTime             author {                 id                 name             }         }     } }<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"pseudo-static-1\">Pseudo Static<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Pseudo-static<\/strong> compatibile<\/td>\n<td>\u2b55Back<\/td>\n<td>\u2b55Partial<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>HARP \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c. \u0412 OData \u043f\u0443\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/service\/Categories(ID=1)\/Products(ID=1)<\/code><\/pre>\n<p>  <\/p>\n<p>GraphQL \u0436\u0435 \u0442\u0443\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u0440\u0438 \u0434\u0435\u043b\u0430\u0445.<\/p>\n<p>  <\/p>\n<h2 id=\"request-vs-response\">Request vs Response<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Same model<\/strong> of request and response<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0412 REST \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438 \u0442\u044b \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0448\u044c \u0432\u0441\u044e \u043f\u043e\u043b\u043d\u043e\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0436\u0435 RPC, \u043f\u043e\u043c\u0438\u043c\u043e \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a \u0436\u0435 \u0437\u043d\u0430\u0442\u044c \u0438 \u043a\u0443\u0447\u0443 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440, \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u044b\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0443 \u0431\u044d\u043a\u0435\u043d\u0434\u0435\u0440\u043e\u0432. \u0410 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 GraphQL \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0451 \u0437\u043d\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>  <\/p>\n<h2 id=\"file-names\">File Names<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>File name<\/strong> compatible<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u044b\u043b\u0430 \u0432\u0441\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430, \u043d\u043e \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u043d\u0430 \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c, \u0430 \u0434\u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">cp .\/report[day=2022-02-22].json .\/archive\/year=2022<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"web-tools\">Web Tools<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Web Tools<\/strong> Friendly<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043b\u043e\u043c\u0430\u0442\u044c \u0433\u043b\u0430\u0437\u0430 \u043e\u0431 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f URI \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043d\u0435\u0440\u0432\u043e\u0432, \u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e.<\/p>\n<p>  <\/p>\n<h2 id=\"collection-manipulations\">Collection Manipulations<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Data <strong>filtering<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>sorting<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>slicing<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>aggregation<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 GraphQL \u044d\u0442\u043e \u043d\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u043c\u043e. \u041a\u0430\u043a-\u0442\u043e \u0436\u0435 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u044d\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438\u0445 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443. \u042d\u0442\u043e \u043e\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0443\u043c\u0435\u044e\u0449\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0448\u0451\u043d \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430\u0434 GraphQL.<\/p>\n<p>  <\/p>\n<h2 id=\"limitations\">Limitations<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Limited filtering <strong>logic<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u0433\u0434\u0430 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u0432 \u0438\u0437\u0431\u044b\u0442\u043a\u0435, \u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u0432\u0430\u0436\u0435\u043d \u0431\u0430\u043b\u0430\u043d\u0441: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f 99% \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439. \u0412 OData \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0446\u0435\u043b\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">contains(User\/Name, '(aTeam)') and (User\/Articles add User\/Comments) ge 10<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0440\u0443\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u043e \u043f\u043e\u0434\u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0438\u0441\u044c: \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u043d\u043e \u0421\u0423\u0411\u0414 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c, \u0438\u043b\u0438 \u043e\u043d \u043f\u043e\u043b\u043e\u0436\u0438\u0442 \u0435\u0451 \u043d\u0430 \u043b\u043e\u043f\u0430\u0442\u043a\u0438, \u0430 \u0447\u0438\u043d\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043c \u043c\u043d\u0435 \u0432 2 \u0447\u0430\u0441\u0430 \u043d\u043e\u0447\u0438?<\/p>\n<p>  <\/p>\n<h2 id=\"metadata\">Metadata<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Metadata<\/strong> query<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 API, \u0430 \u043d\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 API, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 API \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li>\u0421\u0445\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li>\u041f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/li>\n<li>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 HARP \u0443 \u043d\u0430\u0441 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e\u043a\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0432 <a href=\"https:\/\/nin-jin.github.io\/harp\" rel=\"nofollow noopener noreferrer\">\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/a> \u044f \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0432 OData.<\/p>\n<p>  <\/p>\n<h2 id=\"idempotency\">Idempotency<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Idempotent<\/strong> requests<\/td>\n<td>\u2705<\/td>\n<td>\u2b55<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>HARP \u0432\u043e\u0437\u0432\u043e\u0434\u0438\u0442 \u0438\u0434\u0435\u044e \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442. OData \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0441 CRUD. \u041d\u0443 \u0430 GraphQL \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u0440\u043e \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c. \u041a\u0443\u0434\u0430-\u0442\u043e \u043d\u0435 \u0442\u0443\u0434\u0430 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044f \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u043b\u0430. \u041e\u043f\u044f\u0442\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"normal-form\">Normal Form<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Normalized<\/strong> response<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0414\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u044b\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0432\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0435\u043c 100 \u0440\u0430\u0437 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 GraphQL \u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430 \u0434\u0440\u0443\u0437\u044c\u044f\u043c\u0438 \u0434\u0440\u0443\u0437\u0435\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{     person('jin') {         id         name         friends {             id             name             friends {                 id                 name             }         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"json\">{     \"person\": {         \"id\": \"jin\",         \"name\": \"Jin\",         \"friends\": [             {                 \"id\": \"alice\",                 \"name\": \"Alice\",                 \"friends\": [                     {                         \"id\": \"bob\",                         \"name\": \"Bob\",                     },                     {                         \"id\": \"jin\",                         \"name\": \"Jin\",                     },                 ],             },             {                 \"id\": \"bob\",                 \"name\": \"Bob\",                 \"friends\": [                     {                         \"id\": \"alice\",                         \"name\": \"Alice\",                     },                     {                         \"id\": \"jin\",                         \"name\": \"Jin\",                     },                 ],             },         ],     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0430 \u0442\u0440\u0451\u0445 \u0441\u043e\u0431\u0443\u0442\u044b\u043b\u044c\u043d\u0438\u043a\u0430\u0445. \u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0448\u043a\u043e\u043b\u044c\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u043d\u0430 20 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u044f \u0432\u0430\u043c \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043c\u0430\u0433\u0438\u0441\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0441\u0432\u044f\u0437\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0441\u0432\u043e\u0451 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 GraphQL \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0433\u0440\u0430\u0444, \u0430\u2026 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e. \u0421\u043e \u0432\u0441\u0435\u043c\u0438 \u043e\u0442\u0441\u044e\u0434\u0430 \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c\u0438. <\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u0443\u043f\u043d\u0430\u044f \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0438\u0430\u0440\u0438\u043b\u0430 \u0441\u0432\u043e\u044e \u043a\u0440\u0438\u0432\u0443\u044e \u043f\u043e\u0434\u0435\u043b\u043a\u0443, \u0430 \u0432\u0441\u0435 \u0441\u0445\u0430\u0432\u0430\u043b\u0438. \u0418, \u043f\u0440\u0438\u0447\u043c\u043e\u043a\u0438\u0432\u0430\u044f, \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0438\u043b\u0438\u0442\u044c \u043a\u043e\u0441\u0442\u044b\u043b\u0438, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c, <a href=\"https:\/\/gajus.medium.com\/reducing-graphql-response-size-by-a-lot-ff5ba9dcb60\" rel=\"nofollow noopener noreferrer\">\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0435\u0451 \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.<\/li>\n<li>\u0414\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0438\u0445 \u0434\u043b\u044f GQL \u0432\u044b\u0434\u0430\u0447\u0438.<\/li>\n<li>\u041d\u0430\u0442\u0440\u0430\u0432\u0438\u043b\u0438 \u0434\u0435\u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0440, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0441\u0432\u043e\u0439, \u043d\u0435 GQL \u0444\u043e\u0440\u043c\u0430\u0442.<\/li>\n<li>\u041e\u0442\u043e\u0441\u043b\u0430\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0443.<\/li>\n<li>\u041d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043d\u0430\u0442\u0440\u0430\u0432\u0438\u043b\u0438 \u0440\u0435\u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f GQL \u043e\u0442\u0432\u0435\u0442\u0430.<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0442\u0430\u043a\u0438 GQL \u043e\u0442\u0432\u0435\u0442.<\/li>\n<li>\u0410 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u044d\u0442\u0430 \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u043a\u043e\u0441\u0442\u044c \u0432 \u0433\u043e\u0440\u043b\u0435 \u2014 \u043e\u043d \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0441\u0451 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0443\u0434\u0430-\u0442\u043e \u043d\u0435 \u0442\u0443\u0434\u0430 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u044f \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u043b\u0430. \u0421\u043d\u043e\u0432\u0430.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0447\u0435\u0440\u0435\u0437 HARP:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">_query     \\person=jin[name;friend[name;friend[name]]]         reply \\person=jin person     \\jin         name \\Jin         friend             \\person=alice             \\person=bob     \\alice         name \\Alice         friend             \\person=bob             \\person=jin     \\bob         name \\Bob         friend             \\person=alice             \\person=jin<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u0434\u0430\u043c\u043f\u044b \u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c: \u0430 \u0437\u0430\u043f\u0440\u043e\u0441-\u0442\u043e \u043a\u0430\u043a\u043e\u0439 \u0431\u044b\u043b? \u0412\u043e\u0442 \u043e\u043d, \u0442\u0443\u0442 \u0436\u0435 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"post-scriptum\">Post Scriptum<\/h1>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u044d\u0442\u043e \u0432\u0441\u0451 \u043d\u0435 \u0442\u044f\u043d\u0435\u0442 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0438 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u043d\u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0446\u0435\u043b\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c \u0432\u0430\u0441 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c \u043c\u043d\u043e\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c \u0438 \u0441\u0440\u043e\u0447\u043d\u043e \u0431\u0440\u043e\u0441\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e API.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u0440\u043e\u0434\u0443 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 API, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0433\u043e\u043d\u044f\u043b\u043e \u043c\u0435\u043d\u044f \u0432 \u0443\u043d\u044b\u043d\u0438\u0435 \u0438\u0437-\u0437\u0430 \u0434\u0435\u0442\u0441\u043a\u0438\u0445 \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u0439, \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0442\u0443\u0442 \u0438 \u0442\u0430\u043c \u0433\u0440\u0430\u0431\u043b\u0435\u0439, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433 \u0443 \u0434\u0440\u0443\u0433\u0430 \u043a\u0440\u0438\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0431\u043e\u043b\u044c\u044e \u0438 \u0438\u0434\u0435\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u0430\u043c, \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 API. \u0410 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 HARP \u2014 \u044f \u0431\u0443\u0434\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u0438\u0434\u0435\u0438 HARP \u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0432 \u043d\u0451\u043c \u043f\u043e\u043b\u044c\u0437\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445, \u0442\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0432\u0430\u0441 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e \u0438 \u0434\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430. \u041e\u0434\u0438\u043d \u044f \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044e\u0441\u044c, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0440 \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u043b\u0443\u0447\u0448\u0435. \u0425\u043e\u0442\u044f, \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u0441\u0442\u0430\u0432\u043b\u044e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0442\u0438\u043f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u2014 \u0431\u0435\u0441\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0441\u043a\u043e\u0440\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u0443\u0441\u043b\u044b\u0448\u0438\u0442\u0435. \u0410 \u043f\u043e\u043a\u0430..<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0441\u043e \u043c\u043d\u043e\u0439 \u044d\u0442\u043e\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0432 \u0447\u0430\u0442\u0435 <a href=\"https:\/\/t.me\/lang_idioms\" rel=\"nofollow noopener noreferrer\">lang_idioms<\/a>.<\/li>\n<li>\u041e\u0431\u0441\u0443\u0434\u0438\u0442\u044c TS API \u043b\u0443\u0447\u0448\u0435 \u0432 \u0447\u0430\u0442\u0435 <a href=\"https:\/\/t.me\/mam_mol\" rel=\"nofollow noopener noreferrer\">mam_mol<\/a>.<\/li>\n<li>\u0421\u0432\u043e\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u043c\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043d\u0430\u0443\u043a \u044f \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0430 <a href=\"https:\/\/www.youtube.com\/channel\/UC-qEImMrqSLZ9KLee1JTcuw\" rel=\"nofollow noopener noreferrer\">Core Dump<\/a>.<\/li>\n<li>\u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043c\u043e\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 <a href=\"https:\/\/habhub.hyoo.ru\/\" rel=\"nofollow noopener noreferrer\">$hyoo_habhub<\/a>.<\/li>\n<li>\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0445 \u043c\u043e\u0438\u0445 \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441\u043e\u0432 \u0441\u043b\u0438\u0442\u044b \u0432 <a href=\"https:\/\/www.youtube.com\/playlist?list=PLXyFFhv8ucKSC96WOd7Ju2HmEWTA3jPa5\" rel=\"nofollow noopener noreferrer\">\u044d\u0442\u043e\u0442 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442<\/a>.<\/li>\n<li>\u041d\u0443 \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0447\u044c \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044f \u043f\u0438\u0448\u0443 \u0432 <a href=\"https:\/\/twitter.com\/_jin_nin_\" rel=\"nofollow noopener noreferrer\">Twitter<\/a>.<\/li>\n<li>\u041f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c \u0436\u0435 \u043c\u0435\u043d\u044f \u0437\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043c\u043e\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0441\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href=\"https:\/\/boosty.to\/hyoo\" rel=\"nofollow noopener noreferrer\">Boosty<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0414\u0435\u0440\u0436\u0438\u0442\u0435 \u0441\u0435\u0440\u0434\u0446\u0435 \u0433\u043e\u0440\u044f\u0447\u0438\u043c, \u0430 \u0437\u0430\u0434\u043d\u0438\u0446\u0443 \u0445\u043e\u043b\u043e\u0434\u043d\u043e\u0439!<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <\/p>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div data-test-id=\"notice-content\" class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/680376\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">Do you like HARP?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             40%           <\/span> <span class=\"tm-article-poll__answer-label\">Yes<\/span> <span class=\"tm-article-poll__answer-votes\">             8           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:40%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             55%           <\/span> <span class=\"tm-article-poll__answer-label\">No<\/span> <span class=\"tm-article-poll__answer-votes\">             11           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:55%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             5%           <\/span> <span class=\"tm-article-poll__answer-label\">There is no third way<\/span> <span class=\"tm-article-poll__answer-votes\">             1           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:5%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 20 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 3 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.      <\/div>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/680376\/\"> https:\/\/habr.com\/ru\/post\/680376\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u044f\u2026 \u043a\u0430\u043a \u0441\u043a\u0443\u043b\u044c\u043f\u0442\u043e\u0440, \u043e\u0442\u0440\u0435\u0437\u0430\u044e \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043b\u0438\u0448\u044c \u0441\u0430\u043c\u0443\u044e \u043c\u044f\u043a\u043e\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0439 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043a\u0440\u0443\u0433 \u0437\u0430\u0434\u0430\u0447. \u0412\u043e\u0442 \u043b\u0438\u0448\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u044e \u0432\u0435\u0449\u0435\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habhub.hyoo.ru\/#!author=nin-jin\/repo=HabHub\/article=39\" rel=\"nofollow noopener noreferrer\">MarkedText<\/a> \u2014 \u0441\u0442\u0440\u043e\u0439\u043d\u044b\u0439 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 (\u0443\u0431\u0438\u0439\u0446\u0430 MarkDown).<\/li>\n<li><a href=\"https:\/\/github.com\/nin-jin\/slides\/tree\/master\/tree\" rel=\"nofollow noopener noreferrer\">Tree<\/a> \u2014 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u0443\u0431\u0438\u0439\u0446\u0430 JSON \u0438 XML).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437 \u043c\u044b \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/API\" rel=\"nofollow noopener noreferrer\">API<\/a>, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u0431\u0440\u0430\u0442\u044c \u043a\u0440\u043e\u0432\u0430\u0432\u0443\u044e \u043f\u0435\u043b\u0435\u043d\u0443 \u0441 \u0433\u043b\u0430\u0437 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u043e\u0432 \u0438 \u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0437\u043e\u043b\u0438 \u0441 \u043f\u0430\u043b\u044c\u0446\u0435\u0432 \u0431\u044d\u043a\u0435\u043d\u0434\u0435\u0440\u043e\u0432..<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>HARP<\/th>\n<th>OData<\/th>\n<th>GraphQL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Architecture<\/strong><\/td>\n<td>\u2705REST<\/td>\n<td>\u2705REST<\/td>\n<td>\u274cRPC<\/td>\n<\/tr>\n<tr>\n<td>Common <strong>uri query string<\/strong> compatible<\/td>\n<td>\u2b55Back<\/td>\n<td>\u2705Full<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Single line<\/strong> query<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Pseudo-static<\/strong> compatible<\/td>\n<td>\u2b55Back<\/td>\n<td>\u2b55Partial<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Same model<\/strong> of request and response<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>File name<\/strong> compatible<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td><strong>Web Tools<\/strong> Friendly<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>filtering<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>sorting<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>slicing<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td>Data <strong>aggregation<\/strong><\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2b55Unspec<\/td>\n<\/tr>\n<tr>\n<td><strong>Deep<\/strong> fetch<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td><strong>Limited<\/strong> logic<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td><strong>Metadata<\/strong> query<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<td>\u2705<\/td>\n<\/tr>\n<tr>\n<td><strong>Idempotent<\/strong> requests<\/td>\n<td>\u2705Full<\/td>\n<td>\u2b55Partial<\/td>\n<td>\u274cUndef<\/td>\n<\/tr>\n<tr>\n<td><strong>Normalized<\/strong> response<\/td>\n<td>\u2705<\/td>\n<td>\u274c<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-336484","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/336484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=336484"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/336484\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=336484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=336484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=336484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}