{"id":204576,"date":"2013-12-04T07:42:03","date_gmt":"2013-12-04T03:42:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=204576"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=204576","title":{"rendered":"<span class=\"post_title\">\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 RESTful web API \u0432 Cach\u00e9<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 InterSystems Cach\u00e9 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 REST. \u041e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 REST \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/38730\/\">\u043f\u0438\u0441\u0430\u043b\u0438<\/a> \u0438 <a href=\"http:\/\/habrahabr.ru\/post\/144011\/\">\u043d\u0435 \u0440\u0430\u0437<\/a>. \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e \u2014 \u044d\u0442\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f RESTful web API, \u0438 \u0435\u043c\u0443 \u043f\u0440\u0438\u0441\u0443\u0449\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:  <\/p>\n<ul>\n<li>\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430,<\/li>\n<li>\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (stateless),<\/li>\n<li>\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0438 \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430,<\/li>\n<li>\u0435\u0434\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441,<\/li>\n<li>\u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a RESTful web API \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e URL \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043b\u044e\u0441 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u044b,<\/li>\n<li>CRUD \u0447\u0435\u0440\u0435\u0437 HTTP \u2014 HTTP \u043c\u0435\u0442\u043e\u0434\u044b GET, PUT, POST, DELETE (RESTful web API).<\/li>\n<\/ul>\n<p><a name=\"habracut\"><\/a>\u0422\u0438\u043f\u0438\u0447\u043d\u043e\u0435 REST-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: \u0435\u0441\u0442\u044c \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 URL (http:\/\/example.com\/resources\/) \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 URL (http:\/\/example.com\/resources\/item17), \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043f\u043e HTTP, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 GET, PUT, POST, DELETE. \u041d\u0438\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u043e\u0434\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438:  <\/p>\n<table>\n<tr>\n<td><b>\u041c\u0435\u0442\u043e\u0434<\/b><\/td>\n<td><b>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/b><br \/>  <a href=\"http:\/\/example.com\/resources\">example.com\/resources<\/a><\/td>\n<td><b>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443<\/b><br \/>  <a href=\"http:\/\/example.com\/resources\/itemID\">example.com\/resources\/itemID<\/a><\/td>\n<\/tr>\n<tr>\n<td>GET<\/td>\n<td>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a URI \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f. \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/td>\n<td>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435<\/td>\n<\/tr>\n<tr>\n<td>PUT<\/td>\n<td>\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u043d\u043e\u0432\u0443\u044e<\/td>\n<td>\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439<\/td>\n<\/tr>\n<tr>\n<td>POST<\/td>\n<td>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/td>\n<td>\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f<\/td>\n<\/tr>\n<tr>\n<td>DELETE<\/td>\n<td>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e<\/td>\n<td>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/td>\n<\/tr>\n<\/table>\n<p>  <\/p>\n<h4>\u0410 \u043a\u0430\u043a \u0432 Cach\u00e9?<\/h4>\n<p>  \u0412 \u0421\u0423\u0411\u0414 Cach\u00e9 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 REST \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 2014.1 \u2014 \u044d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 <a href=\"https:\/\/wrc.intersystems.com\/wrc\/BetaPortal.csp\">\u0444\u0438\u043b\u0434-\u0442\u0435\u0441\u0442 \u0432\u0435\u0440\u0441\u0438\u0438<\/a> \u0434\u043b\u044f \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u043e\u0432 \u0438 \u0432\u0443\u0437\u043e\u0432 InterSystems Campus. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c REST \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u0443\u0436\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Cach\u00e9 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441-\u0431\u0440\u043e\u043a\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e URL \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u044d\u0442\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439.<br \/>  \u041a\u043b\u0430\u0441\u0441-\u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u0430 %CSP.REST. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043d\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u0430 \u043f\u0443\u0442\u0435\u0439 URL \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"http:\/\/example.com\/resources\/ID\">example.com\/resources\/ID<\/a> \u2014 GET ), \u043f\u0440\u0438\u0447\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 URL \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 Cach\u00e9, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<br \/>  \u041a\u0430\u0440\u0442\u0430 \u043f\u0443\u0442\u0435\u0439 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 URL \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b REST \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Cach\u00e9<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/eeb\/973\/1cc\/eeb9731cce29ff9de4a14848b3ff8d00.png\"\/>  <\/div>\n<\/div>\n<p>  <\/p>\n<h4>\u0417\u0430 \u0434\u0435\u043b\u043e<\/h4>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \/rest  \u0441 Dispatch Class REST.Broker<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0412 \u041f\u043e\u0440\u0442\u0430\u043b\u0435 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u043e\u0439 (\u041f\u043e\u0440\u0442\u0430\u043b):<br \/> \n<ul>\n<li>\u041f\u043e\u0440\u0442\u0430\u043b \u2192 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2192 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u2192 \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2192 \u0412\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u00bb<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u044f (\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439):<br \/> \n<ul>\n<li>\u0418\u043c\u044f: <b>\/rest <\/b> (\u0441\u043b\u0435\u0448 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d)<\/li>\n<li>\u041e\u0431\u043b\u0430\u0441\u0442\u044c: <b> USER<\/b><\/li>\n<li>Dispatch Class: <b>REST.Broker<\/b> (\u0441\u0442\u0440\u043e\u043a\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430)<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c<\/li>\n<\/ol>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/b5d\/ae4\/d03\/b5dae4d03bb02944cad11f07323eb083.png\"\/>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 REST.Broker &#8212; \u043a\u0430\u0440\u0442\u0443 \u043f\u0443\u0442\u0435\u0439 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e web API. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Studio<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c USER<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 REST.Broker, \u043d\u0430\u0436\u0430\u0432 Ctrl+N \u0438\u043b\u0438 \u0438\u0437 \u041c\u0435\u043d\u044e: \u0424\u0430\u0439\u043b\u2192\u041d\u043e\u0432\u044b\u0439.<\/li>\n<li>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u041e\u0431\u0449\u0438\u0435 \u0430 \u0442\u0430\u043c \u041a\u043b\u0430\u0441\u0441 Cach\u00e9<\/li>\n<li>\u0412 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430:<br \/> \n<ul>\n<li>\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430: <b>REST<\/b><\/li>\n<li>\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430: <b>Broker<\/b><\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u0430\u043b\u0435\u0435<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u0412 \u043e\u043a\u043d\u0435 \u0422\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u0430:<br \/> \n<ul>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/li>\n<li>\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430-\u043f\u0440\u0435\u0434\u043a\u0430: <b>%CSP.REST<\/b><\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043a\u043b\u0430\u0441\u0441\u0435-\u0431\u0440\u043e\u043a\u0435\u0440\u0435 \u043a\u0430\u0440\u0442\u0443 \u043f\u0443\u0442\u0435\u0439 \u0438 \u043c\u0435\u0442\u043e\u0434-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">Class&nbsp;REST.Broker&nbsp;Extends&nbsp;%CSP.REST<br \/>  <\/font><font color=\"#000000\">{<br \/>  <\/font><font color=\"#000080\">XData&nbsp;<\/font><font color=\"#000000\">UrlMap<br \/>  {<br \/>  &lt;<\/font><font color=\"#000080\">Routes<\/font><font color=\"#000000\">&gt;<br \/>  &nbsp;&lt;<\/font><font color=\"#000080\">Route&nbsp;<\/font><font color=\"#800000\">Url<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\/test&quot;&nbsp;<\/font><font color=\"#800000\">Method<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;GET&quot;&nbsp;<\/font><font color=\"#800000\">Call<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;Test&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &nbsp;&lt;\/<\/font><font color=\"#000080\">Routes<\/font><font color=\"#000000\">&gt;<br \/>  }<br \/>  <\/font><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">Test()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">&amp;html&lt;<\/font><font color=\"#000000\">\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/font><font color=\"#800080\">&gt;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">quit&nbsp;$$$OK<br \/>  <\/font><font color=\"#000000\">}<br \/>  }<\/font><\/p>\n<p>  \u0412 \u043a\u0430\u0440\u0442\u0435 \u043f\u0443\u0442\u0435\u0439 <b>XData UrlMap<\/b> \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a URL \/test \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 Test \u043a\u043b\u0430\u0441\u0441\u0430 REST.Broker. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0432 Call \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430  <\/div>\n<\/div>\n<p>  \u041f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http:\/\/&lt;\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&gt;\/rest\/test \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0434\u043f\u0438\u0441\u044c \u00ab\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442!\u00bb <a href=\"http:\/\/37.139.6.156\/rest\/test\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a> <br \/>  \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 RESTful web API \u0433\u043e\u0442\u043e\u0432\u043e.<\/p>\n<h4>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0430\u0441\u0441 Data.Company<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0412 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430:<br \/> \n<ul>\n<li>\u0418\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430: <b>Data<\/b><\/li>\n<li>\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430: <b>Company<\/b><\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u0430\u043b\u0435\u0435.<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u0412 \u043e\u043a\u043d\u0435 \u0422\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u0430:<br \/> \n<ul>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <b>Persistent<\/b><\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u0430\u043b\u0435\u0435<\/li>\n<li>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u043f\u0446\u0438\u044e <b>XML Enabled<\/b><\/li>\n<li>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u043f\u0446\u0438\u044e <b>Data Population<\/b> (\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445)<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e Name &#8212; \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">Class&nbsp;Data.Company&nbsp;Extends&nbsp;<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">%Persistent<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#000080\">%Populate<\/font><font color=\"#000000\">,&nbsp;<\/font><font color=\"#000080\">%XML.Adaptor<\/font><font color=\"#000000\">)<br \/>  {<br \/>  <\/font><font color=\"#000080\">Property&nbsp;<\/font><font color=\"#000000\">Name&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">(<\/font><font color=\"#000080\">POPSPEC&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800080\">&quot;Company()&quot;<\/font><font color=\"#000000\">);<br \/>  }<\/font><\/p>\n<p>  <font color=\"#000080\">POPSPEC&nbsp;<\/font><font color=\"#000000\">=&nbsp;<\/font><font color=\"#800080\">&quot;Company()&quot;<\/font><font color=\"#000000\"> \u2014 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u0433\u043e \u043c\u044b \u043e\u0442 \u043d\u0435\u0433\u043e \u0445\u043e\u0442\u0438\u043c, \u0430 \u0442\u043e \u043e\u043d \u0431\u044b \u043d\u0430\u043c \u0438\u043c\u0435\u043d\u0430 \u043b\u044e\u0434\u0435\u0439 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u0442\u0443\u0442.<\/font><\/div>\n<\/div>\n<p>  \u0417\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043b\u0430\u0441\u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435: <font color=\"#0000ff\">w&nbsp;<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">Data.Company<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">Populate<\/font><font color=\"#000000\">(10)<\/p>\n<h4>\u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/h4>\n<p>  \u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 CRUD \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 Return (HTTP \u2014 GET) \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 REST.JSON \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 JSON \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a RESTful \u0441\u0435\u0440\u0432\u0438\u0441\u0443.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043b\u0430\u0441\u0441 REST.JSON<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0412 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430:<br \/> \n<ul>\n<li>\u0418\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430: <b>REST<\/b><\/li>\n<li>\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430: <b>JSON<\/b><\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u0430\u043b\u0435\u0435.<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u0412 \u043e\u043a\u043d\u0435 \u0422\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u0430:<br \/> \n<ul>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/li>\n<li>\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430-\u043f\u0440\u0435\u0434\u043a\u0430: <b>%Base<\/b><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043c\u0435\u0442\u043e\u0434, \u043e\u0442\u0434\u0430\u044e\u0449\u0438\u0439 JSON, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">GetAllCompanies()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;&nbsp;&nbsp;try&nbsp;<\/font><font color=\"#800080\">{&nbsp;&nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">do&nbsp;<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">%ZEN.Auxiliary.jsonSQLProvider<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%WriteJSONFromSQL<\/font><font color=\"#000000\">(,<\/font><font color=\"#008000\">&quot;select&nbsp;*&nbsp;from&nbsp;Data.Company&quot;<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}&nbsp;<\/font><font color=\"#0000ff\">catch&nbsp;<\/font><font color=\"#800000\">ex&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">ex<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">AsStatus<\/font><font color=\"#000000\">()<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">quit&nbsp;<\/font><font color=\"#800000\">st<br \/>  <\/font><font color=\"#000000\">}<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 <b>jsonSQLProvider<\/b> \u2014 \u043e\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 SQL \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043e\u043d\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0442.\u043a. \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f javascript \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<br \/>  <\/font><\/div>\n<\/div>\n<p>  \u041e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 JSON \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u0431\u0440\u043e\u043a\u0435\u0440 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043a\u0430\u0440\u0442\u0443 \u043f\u0443\u0442\u0435\u0439  REST.Broker \u043f\u0443\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u043b<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">Route&nbsp;<\/font><font color=\"#800000\">Url<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\/json\/companies&quot;&nbsp;<\/font><font color=\"#800000\">Method<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;GET&quot;&nbsp;<\/font><font color=\"#800000\">Call<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;REST.JSON:GetAllCompanies&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  <\/font><\/div>\n<\/div>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e! \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http:\/\/&lt;\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&gt;\/rest\/json\/companies \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0432 JSON, <a href=\"http:\/\/37.139.6.156\/rest\/json\/companies\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a>.<\/p>\n<h4>\u0421\u0435\u0440\u0432\u0435\u0440\u0443 \u2014 \u043a\u043b\u0438\u0435\u043d\u0442\u0430!<\/h4>\n<p>  \u0410 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c JSON, \u0432\u043e \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c, \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0433\u043b\u0430\u0437\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Model-View-Controller\">MVC<\/a> JS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a <a href=\"http:\/\/angularjs.org\/\">AngularJS<\/a>. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u0443\u044e CSP \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0412 Cach\u00e9 Studio, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e CSP \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0430\u0436\u0430\u0432 Ctrl+N \u0438\u043b\u0438 \u0438\u0437 \u041c\u0435\u043d\u044e: \u0424\u0430\u0439\u043b\u2192\u041d\u043e\u0432\u044b\u0439<\/li>\n<li>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <b>CSP \u0444\u0430\u0439\u043b<\/b><\/li>\n<li>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 Cach\u00e9 Server Page \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 OK<\/li>\n<li>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043f\u0430\u043f\u043a\u0435 <b>csp\/user<\/b> \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <b>rest.csp<\/b><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0432 JSON &#8212; \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0435\u0433\u043e<\/b><\/p>\n<div class=\"spoiler_text\">&lt;!doctype&nbsp;html&gt;<br \/>  &lt;<font color=\"#ff0000\">html&nbsp;<\/font><font color=\"#000080\">ng-app<\/font><font color=\"#000000\">&gt;<br \/>  &lt;<\/font><font color=\"#ff0000\">head<\/font><font color=\"#000000\">&gt;<br \/>  &lt;<\/font><font color=\"#ff0000\">title<\/font><font color=\"#000000\">&gt;REST&nbsp;Academy&lt;\/<\/font><font color=\"#ff0000\">title<\/font><font color=\"#000000\">&gt;<br \/>  &lt;<\/font><font color=\"#ff0000\">script&nbsp;<\/font><font color=\"#000080\">src<\/font><font color=\"#000000\">=<\/font><font color=\"#800080\">&quot;<a href=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/angularjs\/1.2.3\/angular.min.js&quot;\">ajax.googleapis.com\/ajax\/libs\/angularjs\/1.2.3\/angular.min.js&quot;<\/a><\/font><font color=\"#000000\">&gt;&lt;\/<\/font><font color=\"#ff0000\">script<\/font><font color=\"#000000\">&gt;<br \/>  &lt;<\/font><font color=\"#ff0000\">script&nbsp;<\/font><font color=\"#000080\">language<\/font><font color=\"#000000\">=<\/font><font color=\"#800080\">&quot;javascript&quot;<\/font><font color=\"#000000\">&gt;<br \/>  <\/font><font color=\"#008080\">function&nbsp;<\/font><font color=\"#000000\">ctrl($scope,$http)&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;\u0417\u0430\u043f\u0440\u043e\u0441&nbsp;GET&nbsp;\u043a&nbsp;RESTful&nbsp;web&nbsp;API<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#000000\">$http.get(<\/font><font color=\"#800000\">&quot;\/rest\/json\/companies&quot;<\/font><font color=\"#000000\">).success(<\/font><font color=\"#008080\">function<\/font><font color=\"#000000\">(data)&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;\u041f\u043e\u043c\u0435\u0449\u0430\u0435\u043c&nbsp;\u043e\u0442\u0432\u0435\u0442&nbsp;\u0441\u0435\u0440\u0432\u0435\u0440\u0430&nbsp;\u0432&nbsp;\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e&nbsp;companies<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#000000\">$scope.companies<\/font><font color=\"#000080\">=<\/font><font color=\"#000000\">data.children;<br \/>  &nbsp;&nbsp;&nbsp;}).error(<\/font><font color=\"#008080\">function<\/font><font color=\"#000000\">(data,&nbsp;status)&nbsp;{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;\u0412\u044b\u0432\u043e\u0434&nbsp;\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438&nbsp;\u043e\u0431&nbsp;\u043e\u0448\u0438\u0431\u043a\u0435,&nbsp;\u0435\u0441\u043b\u0438&nbsp;\u0442\u0430\u043a\u043e\u0432\u0430\u044f&nbsp;\u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#000000\">alert(<\/font><font color=\"#800000\">&quot;[&quot;<\/font><font color=\"#000080\">+<\/font><font color=\"#000000\">status<\/font><font color=\"#000080\">+<\/font><font color=\"#800000\">&quot;]&nbsp;&nbsp;&nbsp;\u041e\u0448\u0438\u0431\u043a\u0430&nbsp;\u043f\u0440\u0438&nbsp;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438&nbsp;\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439![&quot;<\/font><font color=\"#000080\">+<\/font><font color=\"#000000\">data<\/font><font color=\"#000080\">+<\/font><font color=\"#800000\">&quot;]&quot;<\/font><font color=\"#000000\">);<br \/>  &nbsp;&nbsp;&nbsp;})<br \/>  };<br \/>  &lt;\/<\/font><font color=\"#ff0000\">script<\/font><font color=\"#000000\">&gt;<br \/>  &lt;\/<\/font><font color=\"#ff0000\">head<\/font><font color=\"#000000\">&gt;<br \/>  &lt;<\/font><font color=\"#ff0000\">body&nbsp;<\/font><font color=\"#000080\">ng-controller<\/font><font color=\"#000000\">=<\/font><font color=\"#800080\">&quot;ctrl&quot;<\/font><font color=\"#000000\">&gt;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&lt;<\/font><font color=\"#ff0000\">div&nbsp;<\/font><font color=\"#000080\">ng-repeat<\/font><font color=\"#000000\">=<\/font><font color=\"#800080\">&quot;company&nbsp;in&nbsp;companies&quot;<\/font><font color=\"#000000\">&gt;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{company.Name}}<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&lt;\/<\/font><font color=\"#ff0000\">div<\/font><font color=\"#000000\">&gt;<br \/>  &lt;\/<\/font><font color=\"#ff0000\">body<\/font><font color=\"#000000\">&gt;<br \/>  &lt;\/<\/font><font color=\"#ff0000\">html<\/font><font color=\"#000000\">&gt;<\/font>  <\/div>\n<\/div>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http:\/\/&lt;\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&gt;\/csp\/user\/rest.csp \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439. \u041a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, <a href=\"http:\/\/37.139.6.156\/csp\/rest\/rest0.csp\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a>.<\/p>\n<h4>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Create, Update, Delete \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 <\/h4>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f 3 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 CRUD: \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u043b\u0430\u0441\u0441 REST.JSON \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b<\/b><\/p>\n<div class=\"spoiler_text\"><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">CreateCompany()&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;\u0411\u0435\u0440\u0451\u043c&nbsp;JSON&nbsp;\u0438\u0437&nbsp;\u0437\u0430\u043f\u0440\u043e\u0441\u0430&nbsp;\u0438&nbsp;\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c&nbsp;\u0432&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442&nbsp;\u043a\u043b\u0430\u0441\u0441\u0430&nbsp;Data.Company<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">$$$THROWONERROR<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">,<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">%ZEN.Auxiliary.jsonProvider<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%ConvertJSONToObject<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">%request<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Content<\/font><font color=\"#000000\">,<\/font><font color=\"#008000\">&quot;Data.Company&quot;<\/font><font color=\"#000000\">,.<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">,1))<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">$$$THROWONERROR<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">%Save<\/font><font color=\"#000000\">())<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">catch&nbsp;<\/font><font color=\"#800000\">ex&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">ex<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">AsStatus<\/font><font color=\"#000000\">()<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">quit&nbsp;<\/font><font color=\"#800000\">st<br \/>  <\/font><font color=\"#000000\">}<br \/>  <\/font><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">DeleteCompany(<\/font><font color=\"#ff00ff\">compid&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">$$$THROWONERROR<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">,<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">Data.Company<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%DeleteId<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">compid<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}&nbsp;<\/font><font color=\"#0000ff\">catch&nbsp;<\/font><font color=\"#800000\">ex&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">s&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">ex<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">AsStatus<\/font><font color=\"#000000\">()<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">quit&nbsp;<\/font><font color=\"#800000\">st<br \/>  <\/font><font color=\"#000000\">}<br \/>  <\/font><font color=\"#000080\">ClassMethod&nbsp;<\/font><font color=\"#000000\">UpdateCompany(<\/font><font color=\"#ff00ff\">compid&nbsp;<\/font><font color=\"#000080\">As&nbsp;%String<\/font><font color=\"#000000\">)&nbsp;<\/font><font color=\"#000080\">As&nbsp;%Status<br \/>  <\/font><font color=\"#000000\">{<br \/>  &nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$$$OK<br \/>  &nbsp;try&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">$$$THROWONERROR<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">,<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">%ZEN.Auxiliary.jsonProvider<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%ConvertJSONToObject<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">%request<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Content<\/font><font color=\"#000000\">,,.<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">,1))<br \/>  &nbsp;&nbsp;&nbsp;<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c&nbsp;\u043e\u0431\u044a\u0435\u043a\u0442,&nbsp;\u043a\u043e\u0442\u043e\u0440\u044b\u0439&nbsp;\u0445\u043e\u0442\u0438\u043c&nbsp;\u043e\u0442\u0440\u0435\u0434\u0430\u043a\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">comp<\/font><font color=\"#000000\">=<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">Data.Company<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">%OpenId<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">compid<\/font><font color=\"#000000\">)<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">throw<\/font><font color=\"#000000\">:<\/font><font color=\"#800000\">comp<\/font><font color=\"#000000\">=<\/font><font color=\"#0000ff\">$$$NULLOREF&nbsp;<\/font><font color=\"#000080\">##class<\/font><font color=\"#000000\">(<\/font><font color=\"#008080\">%Exception.StatusException<\/font><font color=\"#000000\">).<\/font><font color=\"#0000ff\">CreateFromStatus<\/font><font color=\"#000000\">(<\/font><font color=\"#0000ff\">$$$ERROR<\/font><font color=\"#000000\">(5001,<\/font><font color=\"#008000\">&quot;Company&nbsp;does&nbsp;not&nbsp;exist&quot;<\/font><font color=\"#000000\">))<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#008000\">\/\/&nbsp;\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c&nbsp;\u0438&nbsp;\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">comp<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Name<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">obj<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">Name<br \/>  &nbsp;&nbsp;&nbsp;$$$THROWONERROR<\/font><font color=\"#000000\">(<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">,<\/font><font color=\"#800000\">comp<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">%Save<\/font><font color=\"#000000\">())<br \/>  &nbsp;<\/font><font color=\"#800080\">}&nbsp;<br \/>  &nbsp;<\/font><font color=\"#0000ff\">catch&nbsp;<\/font><font color=\"#800000\">ex&nbsp;<\/font><font color=\"#800080\">{<br \/>  &nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000ff\">set&nbsp;<\/font><font color=\"#800000\">st<\/font><font color=\"#000000\">=<\/font><font color=\"#800000\">ex<\/font><font color=\"#000000\">.<\/font><font color=\"#0000ff\">AsStatus<\/font><font color=\"#000000\">()<br \/>  &nbsp;<\/font><font color=\"#800080\">}<br \/>  &nbsp;<\/font><font color=\"#0000ff\">quit&nbsp;<\/font><font color=\"#800000\">st<br \/>  <\/font><font color=\"#000000\">}<br \/>  <\/font><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u0442\u0438 \u0432 \u0431\u0440\u043e\u043a\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">&lt;<font color=\"#000080\">Route&nbsp;<\/font><font color=\"#800000\">Url<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\/json\/company&quot;&nbsp;<\/font><font color=\"#800000\">Method<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;POST&quot;&nbsp;<\/font><font color=\"#800000\">Call<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;REST.JSON:CreateCompany&quot;<\/font><font color=\"#000000\">\/&gt;&nbsp;<br \/>  &lt;<\/font><font color=\"#000080\">Route&nbsp;<\/font><font color=\"#800000\">Url<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\/json\/company\/:compid&quot;&nbsp;<\/font><font color=\"#800000\">Method<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;DELETE&quot;&nbsp;<\/font><font color=\"#800000\">Call<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;REST.JSON:DeleteCompany&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  &lt;<\/font><font color=\"#000080\">Route&nbsp;<\/font><font color=\"#800000\">Url<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;\/json\/company\/:compid&quot;&nbsp;<\/font><font color=\"#800000\">Method<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;PUT&quot;&nbsp;<\/font><font color=\"#800000\">Call<\/font><font color=\"#000000\">=<\/font><font color=\"#008000\">&quot;REST.JSON:UpdateCompany&quot;<\/font><font color=\"#000000\">\/&gt;<br \/>  <\/font><\/div>\n<\/div>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 CRUD-\u043f\u043e\u043b\u043d\u043e\u0433\u043e RESTful web API \u0432 Cach\u00e9.<\/p>\n<h4>\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Create, Update, Delete<\/h4>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 rest.csp \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"html\">&lt;!doctype html&gt; &lt;html ng-app&gt; &lt;head&gt; &lt;title&gt;REST Academy&lt;\/title&gt; &lt;script src=&quot;https:\/\/ajax.googleapis.com\/ajax\/libs\/angularjs\/1.2.3\/angular.min.js&quot;&gt;&lt;\/script&gt; &lt;script language=&quot;javascript&quot;&gt; function ctrl($scope,$http) {     \/\/ \u0417\u0430\u043f\u0440\u043e\u0441 GET \u043a RESTful web API         $scope.getCompanies=function() {        $http.get(&quot;\/rest\/json\/companies&quot;).success(function(data) {              \/\/ \u041f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e companies            $scope.companies=data.children;        }).error(function(data, status) {                  \/\/ \u0412\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442            alert(&quot;[&quot;+status+&quot;] \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439! [&quot;+data+&quot;]&quot;);        });    };          \/\/ \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e     $scope.create = function (company){        $http.post(&quot;\/rest\/json\/company&quot;,company)        .success(function(data){$scope.getCompanies();$scope.alertzone=&quot;\u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e &quot;+company.Name;}).error(function(data,status){         $scope.alertzone=&quot;[&quot;+status+&quot;] \u041e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 :( [&quot;+data+&quot;]&quot;; });     }      \/\/ \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e   $scope.update = function (company){        $http.put(&quot;\/rest\/json\/company\/&quot;+company.ID,company)         .success(function(data){$scope.alertzone=&quot;\u041e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e &quot;+company.Name;}).error(function(data,status){ \/\/ \u043f\u043e\u043c\u0435\u043d\u044f\u043b alert(....); \u043d\u0430 alertzone         $scope.alertzone=&quot;[&quot;+status+&quot;] \u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 :( [&quot;+data+&quot;]&quot;; });     }                  \/\/ \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e     $scope.delete = function (company){         $http.delete(&quot;\/rest\/json\/company\/&quot;+company.ID)         .success(function(data){$scope.getCompanies();$scope.alertzone=&quot;\u0423\u0434\u0430\u043b\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e &quot;+company.Name;}).error(function(data,status){             $scope.alertzone=&quot;[&quot;+status+&quot;] \u041e\u0448\u0438\u0431\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 :( [&quot;+data+&quot;]&quot;; });     } }; &lt;\/script&gt; &lt;\/head&gt; &lt;body ng-controller=&quot;ctrl&quot; ng-init=&quot;getCompanies();&quot;&gt;  &lt;h4 ng-model=&quot;alertzone&quot;&gt;&lt;font color=red&gt;{{alertzone}}&lt;\/font&gt;&lt;\/h4&gt;  &lt;form name=&quot;compCreateForm&quot; ng-model=&quot;company&quot; ng-submit=&quot;create(company); company='';&quot;&gt;     \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e &lt;input type=&quot;text&quot; ng-model=&quot;company.Name&quot;\/&gt;     &lt;input type=&quot;submit&quot; value=&quot;\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c&quot;\/&gt; &lt;\/form&gt; &lt;br&gt; &lt;div ng-repeat=&quot;company in companies&quot;&gt;     &lt;form name=&quot;compForm&quot; ng-submit=&quot;update(company); compForm.$setPristine();&quot;&gt;         &lt;input type=&quot;text&quot; ng-model=&quot;company.Name&quot;\/&gt;         &lt;input type=&quot;submit&quot; value=&quot;\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c&quot; ng-show=&quot;compForm.$dirty&quot;\/&gt;         &lt;input type=&quot;button&quot; value=&quot;X&quot; ng-click=&quot;delete(company);&quot;\/&gt;     &lt;\/form&gt; &lt;\/div&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0433\u043e\u0442\u043e\u0432 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434 \u043a web API \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http:\/\/&lt;\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&gt;\/csp\/user\/rest.csp. <a href=\"http:\/\/37.139.6.156\/csp\/rest\/rest.csp\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a>. <\/p>\n<h4>\u0418\u0442\u043e\u0433\u043e<\/h4>\n<p>  \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c RESTful web API \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Cach\u00e9. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Cach\u00e9.<\/p>\n<h4>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435?<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043c\u043e\u0433\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 RESTful web API \u043d\u0430 \u0431\u0430\u0437\u0435 Cach\u00e9.<\/p>\n<h4>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h4>\n<p>  <a href=\"https:\/\/www.mediafire.com\/?g0463zbgyop6bm3\">\u0421\u043a\u0430\u0447\u0430\u0442\u044c RESTful web API, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435<\/a><br \/>  <a href=\"http:\/\/37.139.6.156\/csp\/rest\/rest.csp\">\u041f\u0440\u0438\u043c\u0435\u0440 RESTful web API<\/a><br \/>  <a href=\"http:\/\/glossary.intersystems.ru\/glossary\/terms\">\u0413\u043b\u043e\u0441\u0441\u0430\u0440\u0438\u0439 \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c InterSystems \u2014 \u0442\u0430\u043a \u0436\u0435 RESTful web API <\/a><br \/>  <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/documatic\/%25CSP.Documatic.cls?PAGE=CLASS&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25ZEN.Auxiliary.jsonProvider\">JSON \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u2014 \u043a\u043b\u0430\u0441\u0441<\/a> \u2014 <a href=\"http:\/\/www.google.com\/url?q=http%3A%2F%2Fdocs.intersystems.com%2Fcache20131%2Fcsp%2Fdocumatic%2F%2525CSP.Documatic.cls%3FPAGE%3DCLASS%26LIBRARY%3D%2525SYS%26CLASSNAME%3D%2525ZEN.Auxiliary.jsonSQLProvider&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHlJ8Jka0zos5ERDlUY1o8EL0B-Ow\"> \u043a\u043b\u0430\u0441\u04412(SQL)<\/a><br \/>  <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GCSP_httpreq\">%request <\/a> \u2014 <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/documatic\/%25CSP.Documatic.cls?APP=1&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25CSP.Request\">\u043a\u043b\u0430\u0441\u0441<\/a><br \/>  <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GCGI_oper_config#GCGI_http\">%response<\/a> \u2014 <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/documatic\/%25CSP.Documatic.cls?PAGE=CLASS&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25CSP.Response\">\u043a\u043b\u0430\u0441\u0441<\/a><br \/>  <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GXML_export\">XML \u044d\u043a\u0441\u043f\u043e\u0440\u0442<\/a> \u2014 <a href=\"http:\/\/docs.intersystems.com\/cache20131\/csp\/documatic\/%25CSP.Documatic.cls?PAGE=CLASS&amp;LIBRARY=%25SYS&amp;CLASSNAME=%25XML.DataSet\">\u043a\u043b\u0430\u0441\u0441 <\/a><\/font>    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/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=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/204576\/\"> http:\/\/habrahabr.ru\/company\/intersystems\/blog\/204576\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 InterSystems Cach\u00e9 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 REST. \u041e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 REST \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/38730\/\">\u043f\u0438\u0441\u0430\u043b\u0438<\/a> \u0438 <a href=\"http:\/\/habrahabr.ru\/post\/144011\/\">\u043d\u0435 \u0440\u0430\u0437<\/a>. \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e \u2014 \u044d\u0442\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f RESTful web API, \u0438 \u0435\u043c\u0443 \u043f\u0440\u0438\u0441\u0443\u0449\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:  <\/p>\n<ul>\n<li>\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430,<\/li>\n<li>\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (stateless),<\/li>\n<li>\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0438 \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430,<\/li>\n<li>\u0435\u0434\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441,<\/li>\n<li>\u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a RESTful web API \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e URL \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043b\u044e\u0441 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u044b,<\/li>\n<li>CRUD \u0447\u0435\u0440\u0435\u0437 HTTP \u2014 HTTP \u043c\u0435\u0442\u043e\u0434\u044b GET, PUT, POST, DELETE (RESTful web API).<\/li>\n<\/ul>\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-204576","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/204576","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=204576"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/204576\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=204576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=204576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=204576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}