{"id":273806,"date":"2016-02-08T13:11:02","date_gmt":"2016-02-08T10:11:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=273806"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=273806","title":{"rendered":"\u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 REST API \u0434\u043b\u044f \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0441\u0442\u043e\u0432 \u0437\u0430 5 \u043c\u0438\u043d\u0443\u0442"},"content":{"rendered":"<p>       <a href=\"https:\/\/habrahabr.ru\/post\/276731\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2f2\/e45\/c50\/2f2e45c507a846ec88030b21a1d0610c.png\"\/><\/a><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440, \u043c\u043d\u0435 28 \u043b\u0435\u0442 \u0438 \u044f <s>\u043d\u0430\u0440\u043a\u043e\u043c\u0430\u043d<\/s> \u043d\u0430\u0440\u043a\u043e\u043c\u0430\u043d. \u041c\u043e\u0439 \u043d\u0430\u0440\u043a\u043e\u0442\u0438\u043a \u2013 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430. \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u044f \u043f\u043e\u0434\u0441\u0435\u043b \u0438\u0437-\u0437\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0437\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0435\u043d\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u0438\u043b\u0438 \u043f\u0440\u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0438. \u0412\u0440\u0430\u0447\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043e, \u043c\u043e\u043b \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0437\u043c \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0435\u043c\u043b\u0435\u043d\u0438\u0435 \u043a \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443. \u0427\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0432\u043e\u0442 \u044f \u0438 \u043f\u043e\u0434\u0441\u0435\u043b. \u042f \u043d\u0435 \u0441\u0442\u0430\u043b \u0441 \u043d\u0438\u043c\u0438 \u0441\u043f\u043e\u0440\u0438\u0442\u044c \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u0438\u0441\u043a\u0430\u0442\u044c \u0432\u0438\u043d\u043e\u0432\u043d\u0438\u043a\u043e\u0432 \u043c\u043e\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0440\u0435\u0448\u0438\u043b \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. <\/p>\n<p>  \u041c\u0438\u0440 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d, \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0432\u0435\u0449\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u2013 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0451 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u043e. \u041b\u044e\u0434\u044f\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u043e\u043d\u0438 \u043e\u0449\u0443\u0449\u0430\u044e\u0442 \u0441\u0432\u043e\u044e \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043f\u0443\u0441\u0442\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u0441\u0442\u0440\u0430\u0445\u0430 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0451: \u0442\u044b\/\u0412\u044b\/\u0432\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043e\u0431\u0449\u0430\u043b\u0441\u044f \u044f \u0441 \u044d\u0442\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0442? \u041c\u044b \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0442\u044b? \u042f \u043f\u0438\u0448\u0443 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u00ab\u0412\u044b\u043a\u043d\u0443\u0442\u044c\u00bb \u0438\u043b\u0438 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0440\u044f\u0434\u043e\u0432\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u00ab\u0432\u044b\u00bb. \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u043d\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043d\u0430\u0434\u043e \u0440\u0430\u0441\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0441 \u043f\u043e\u0440\u043e\u0433\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u00ab\u0442\u044b\u043a\u0430\u0442\u044c\u00bb, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u044f \u0435\u0433\u043e \u0434\u0440\u0443\u0433 \u0441 \u043a\u0443\u0440\u0438\u043b\u043a\u0438?<\/p>\n<p>  \u042f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0435\u043c \u00ab\u0432\u044b\u043a\u0430\u044e\u00bb \u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u0438 \u044f \u0443\u0431\u0435\u0436\u0434\u0451\u043d, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0446\u0435\u043d\u0443. \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0435\u0441\u0442\u044c \u043b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u0438 \u043e\u043d\u0438 \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u044f\u0442 \u043d\u0430 \u043c\u043e\u0451 \u043f\u0438\u0441\u044c\u043c\u043e.<\/p>\n<p>  \u0422\u0430\u043a \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438?  <\/div>\n<\/div>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b \u043f\u0440\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0436\u0438\u0437\u043d\u0438, \u044f \u0438\u043c\u0435\u043b \u0432\u0432\u0438\u0434\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0435 \u0436\u0430\u043b\u0435\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u043d\u0435 \u043e\u0431\u0449\u0430\u044e\u0441\u044c \u0441 \u043b\u044e\u0434\u044c\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u2013 \u0441\u043b\u043e\u0436\u043d\u0430, \u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0435\u0439 \u043d\u0435 \u0443\u0434\u0435\u043b\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432\u0430\u043c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0434\u0430\u0436\u0435 \u0442\u0440\u0443\u0434\u043d\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d \u0441\u0430\u043c \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043e \u0447\u0451\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u043a\u043e\u0435-\u0447\u0442\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u0432\u0440\u0435\u043c\u044f. \u0412\u0440\u0435\u043c\u044f \u2013 \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u00ab\u0412\u0440\u0435\u043c\u044f \u2014 \u0434\u0435\u043d\u044c\u0433\u0438\u00bb \u0438\u0437 \u0443\u0441\u0442 \u0443\u043c\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0443 \u043c\u0435\u043d\u044f \u0443\u043b\u044b\u0431\u043a\u0443 \u0441 \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (<i>\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0448\u044c \u043a\u0430\u043a \u0438\u0434\u0438\u043e\u0442 \u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435<\/i>). \u042f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0437\u043d\u0430\u044e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u0435\u043d\u044c\u0433\u0438 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u043e\u0436\u0438\u0442\u044c \u0434\u043e\u043b\u044c\u0448\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439.<\/p>\n<h4><font color=\"#d62631\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/font><\/h4>\n<p>  \u0420\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u043e\u0431 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <i>REST API<\/i> \u0437\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u2013 <a href=\"http:\/\/python-eve.org\/index.html\">Python Eve<\/a>.<\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432\u0432\u043e\u0434\u044f\u0442 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043d\u0430\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0434\u0443\u043c\u0430\u044e\u0442, \u0447\u0442\u043e <i>REST API<\/i> \u044d\u0442\u043e <i>GET\/POST\/PUT\/DELETE<\/i>. \u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0438 \u0434\u0443\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043f\u0430\u0440\u044b \u0447\u0430\u0441\u043e\u0432. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043c\u0430\u0433\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 <i>Express.js\/Mongoose\/Passport<\/i> \u0438 \u0435\u0449\u0451 \u043a\u0443\u0447\u0438 \u0445\u043b\u0430\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0435\u0447\u0451\u0442 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 event-loop. \u0412\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c <i>supervisor<\/i>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0438 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c. <\/p>\n<p>  \u0418 \u0432\u0441\u0451 \u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e, \u043d\u043e \u0432\u0447\u0435\u0440\u0430 \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0441 \u0445\u0430\u0431\u0440\u0430-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f &quot;<i>Express.js, MongoDB, Mongoose, Passport, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c WebStorm&#8217;a \u0438 \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u043d\u0430 \u043f\u043b\u0435\u0447\u0430\u0445<\/i>&quot;. \u041f\u043e\u0445\u043e\u0436\u0438\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u0441\u043b\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u0447\u0430\u0441\u0442\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u00ab\u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c\u00bb \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043d\u0435\u0451.<\/p>\n<h4><font color=\"#d62631\">\u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 REST API?<\/font><\/h4>\n<p>  \u0420\u0435\u0447\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/REST\">\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f <i>REST API<\/i><\/a>, \u043d\u043e \u0438 \u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/HTTP\">\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 HTTP<\/a>, \u043e <a href=\"http:\/\/python-eve.org\/features.html#data-validation\">\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438<\/a> \u0438 <a href=\"http:\/\/python-eve.org\/features.html#resource-level-cache-control\">\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<\/a>, \u043e <a href=\"http:\/\/python-eve.org\/features.html#hateoas\">HATEOAS<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/HATEOAS\"><i>wikipedia<\/i><\/a>), \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c, \u043f\u043e\u0445\u043e\u0436\u0435, \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c. \u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f <a href=\"http:\/\/python-eve.org\/features.html#filtering\">\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/a> \u0438 <a href=\"http:\/\/python-eve.org\/features.html#sorting\">\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430<\/a>, <a href=\"http:\/\/python-eve.org\/features.html#pagination\">\u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f<\/a> \u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041f\u043e\u0442\u043e\u043c \u043c\u044b \u0437\u0430\u0434\u0443\u043c\u0430\u0435\u043c\u0441\u044f \u043e <a href=\"http:\/\/python-eve.org\/features.html#data-integrity-and-concurrency-control\">\u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/a> \u0438 <a href=\"http:\/\/python-eve.org\/features.html#conditional-requests\">\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445<\/a>. \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f <a href=\"http:\/\/python-eve.org\/features.html#authentication\">\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/a>, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435<a href=\"http:\/\/python-eve.org\/features.html#json-and-xml-rendering\"> \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 JSON, \u043d\u043e \u0438 \u0432 XML<\/a>. \u042d\u0442\u043e \u0435\u0449\u0451 \u043f\u0440\u043e <a href=\"http:\/\/python-eve.org\/features.html#document-versioning\">\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c<\/a> \u0438 <a href=\"http:\/\/python-eve.org\/features.html#embedded-resource-serialization\">\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/a> \u044f \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b. \u0417\u0430\u0442\u0435\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439-\u0442\u043e #$%$%^ \u043d\u0430\u0447\u043d\u0451\u0442 \u0434\u043e\u043b\u0431\u0438\u0442\u044c \u0432 \u043d\u0430\u0448 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 API \u0441 \u0442\u044f\u0436\u0451\u043b\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0438 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f <a href=\"http:\/\/python-eve.org\/features.html#rate-limiting\">\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/a>.<\/p>\n<p>  \u0414\u0430\u0436\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0442\u0430\u043a\u043e\u0433\u043e API \u0437\u0430\u0439\u043c\u0451\u0442\u0441\u044f \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043a\u0440\u0443\u0442\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441 3-\u043c\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u043c\u0438, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c WebStorm&#8217;a \u0438 \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u043d\u0430 \u043f\u043b\u0435\u0447\u0430\u0445, \u043e\u043d \u0437\u0430\u0442\u0440\u0430\u0442\u0438\u0442 \u043d\u0430 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043e\u0440\u043e\u0433\u043e, \u0430 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043b\u0433\u0438\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/07c\/1f0\/d59\/07c1f0d590fe4b4fbee0345e2054427d.jpg\"\/><\/p>\n<p>  \u041d\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u2013 \u043b\u044e\u0431\u0438\u043c, \u0430 \u0432\u0440\u0435\u043c\u044f \u2013 \u0443\u0432\u0430\u0436\u0430\u0435\u043c. \u0422\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u0436\u0435!<\/p>\n<h4><font color=\"#d62631\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/font><\/h4>\n<p>  \u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 python-\u043f\u0430\u043a\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:<\/p>\n<pre><code class=\"bash\">$ pip install eve <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 <a href=\"http:\/\/python-eve.org\/install.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a>.<\/p>\n<h4><font color=\"#d62631\">\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442<\/font><\/h4>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0447\u043d\u0451\u043c \u00ab\u0442\u0432\u043e\u0440\u0438\u0442\u044c\u00bb \u043c\u0430\u0433\u0438\u044e, \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 <i>MongoDB<\/i>. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0451 \u043d\u0435\u0442, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u044b\u043c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/mongolab.com\/\">MongoLab<\/a>. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0439\u043c\u0451\u0442 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0438\u043d\u0443\u0442\u044b. \u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0431\u0430\u0437\u044b.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e <i>REST API<\/i>. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <b>run.py<\/b> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code class=\"python\">from eve import Eve app = Eve()  if __name__ == '__main__':     app.run() <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a <b>settings.py<\/b>:<\/p>\n<pre><code class=\"python\"># \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 user, password, ds049945.mongolab.com, example \u043d\u0430 \u0432\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0411\u0414. MONGO_URI = &quot;mongodb:\/\/user:password@ds049945.mongolab.com:49945\/example&quot;  # \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Eve \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 API \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 &quot;read-only&quot; (\u0442.\u0435. \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e GET \u0437\u0430\u043f\u0440\u043e\u0441\u044b), # \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 POST, PUT, PATCH, DELETE. RESOURCE_METHODS = ['GET', 'POST', 'DELETE'] ITEM_METHODS = ['GET', 'PATCH', 'PUT', 'DELETE']  DOMAIN = {     # \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441 `\/users`     'users': {         # \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u044c Cerberus \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 Eve.         # \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f http:\/\/docs.python-cerberus.org\/en\/stable\/.         # \u041b\u0438\u0431\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 EVE http:\/\/python-eve.org\/validation.html#validation.         'schema': {             'username': {                 'type': 'string',                 'minlength': 5,                 'maxlength': 32,                 'required': True,                 # \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 (\u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c)                 'unique': True,             },             'firstname': {                 'type': 'string',                 'minlength': 1,                 'maxlength': 10,                 'required': True,             },             'lastname': {                 'type': 'string',                 'minlength': 1,                 'maxlength': 15,                 'required': True,             },             'role': {                                  'type': 'list', # \u0442\u0438\u043f: \u0441\u043f\u0438\u0441\u043e\u043a                 'allowed': [&quot;author&quot;, &quot;contributor&quot;], # \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: &quot;author&quot;, &quot;contributor&quot;             },             'location': {                 'type': 'dict', # \u0442\u0438\u043f: \u0441\u043b\u043e\u0432\u0430\u0440\u044c                 # \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c &quot;\u0441\u0445\u0435\u043c\u0443&quot; \u0441\u043b\u043e\u0432\u0430\u0440\u044f                 'schema': {                     'address': {'type': 'string'},                     'city': {'type': 'string'}                 },             },             'born': {                 'type': 'datetime',             },             'active': {                 'type': 'boolean',                 'default': True             }         }     },      # \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441 `\/groups`     'groups': {         # \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u043c. \u0432\u044b\u0448\u0435).         'schema': {             'title': {                 'type': 'string',                 'minlength': 5,                 'maxlength': 32,                 'required': True,                 'unique': True             },             'users': {                 'type': 'list',  # \u0442\u0438\u043f: \u0441\u043f\u0438\u0441\u043e\u043a                 'default': [],   # \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a                 # \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c &quot;\u0441\u0445\u0435\u043c\u0443&quot; \u0441\u043f\u0438\u0441\u043a\u0430                 'schema': {                      'type': 'objectid', # \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445: objectid                     # \u0441\u0441\u044b\u043b\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438                     'data_relation': {                         'resource': 'users',  # \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441 `users` (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u044b\u0448\u0435)                         'field': '_id',  # \u043d\u0430 \u043f\u043e\u043b\u0435 `_id`                         'embeddable': True                     }                 }             }         }     } } <\/code><\/pre>\n<p>  \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u2013 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 <a href=\"http:\/\/python-eve.org\/config.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  \u0412\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ python3.5 run.py  * Running on http:\/\/127.0.0.1:5000\/ (Press CTRL+C to quit) <\/code><\/pre>\n<h4><font color=\"#d62631\">\u041f\u0440\u0435\u043b\u044e\u0434\u0438\u044f<\/font><\/h4>\n<p>  \u0412\u044b \u0443\u0436\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043d\u0430\u0447\u043d\u0451\u043c \u0431\u0435\u0437\u0431\u043e\u0436\u043d\u043e &quot;<i>curl<\/i>\u0438\u0442\u044c&quot;, \u043d\u043e \u044f \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u0432\u0430\u0441 \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u0442\u044c. \u041c\u044b, \u0441\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u043c \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0437\u043c\u043e\u043c, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/98b\/5e6\/5a3\/98b5e65a30c9467fae795626e25a3e8b.png\"\/><br \/>  \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/jkbrzt\/httpie\">HTTPie<\/a> \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 <s>\u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a<\/s> \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">$ pip install httpie <\/code><\/pre>\n<p>  <\/p>\n<h4><font color=\"#d62631\">\u0418\u0433\u0440\u0438\u0449\u0430 \u0438 \u0437\u0430\u0431\u0430\u0432\u044b<\/font><\/h4>\n<p>  <i>HTTPie<\/i> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 &quot;<i>http<\/i>&quot;. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c <i>GET<\/i> \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 <i>API<\/i>, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/ HTTP\/1.0 200 OK Content-Length: 99 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:13:33 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_links&quot;: {         &quot;child&quot;: [             {                 &quot;href&quot;: &quot;users&quot;,                 &quot;title&quot;: &quot;users&quot;             },             {                 &quot;href&quot;: &quot;groups&quot;,                 &quot;title&quot;: &quot;groups&quot;             }         ]     } } <\/code><\/pre>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"http:\/\/python-eve.org\/features.html#hateoas-feature\">HATEOAS<\/a> \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 2 \u0440\u0435\u0441\u0443\u0440\u0441\u0430: <i>users<\/i> \u0438 <i>groups<\/i>. \u0417\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u044c:<\/p>\n<pre><code class=\"bash\">\u00bb http http:\/\/0.0.0.0:5000\/users HTTP\/1.0 200 OK Content-Length: 166 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:20:41 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0 X-Total-Count: 0  {     &quot;_items&quot;: [],     &quot;_links&quot;: {         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;users&quot;,             &quot;title&quot;: &quot;users&quot;         }     },     &quot;_meta&quot;: {         &quot;max_results&quot;: 25,         &quot;page&quot;: 1,         &quot;total&quot;: 0     } } <\/code><\/pre>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <i>johndoe<\/i>:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/users username=johndoe HTTP\/1.0 422 UNPROCESSABLE ENTITY Content-Length: 184 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:22:44 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_error&quot;: {         &quot;code&quot;: 422,         &quot;message&quot;: &quot;Insertion failure: 1 document(s) contain(s) error(s)&quot;     },     &quot;_issues&quot;: {         &quot;firstname&quot;: &quot;required field&quot;,         &quot;lastname&quot;: &quot;required field&quot;     },     &quot;_status&quot;: &quot;ERR&quot; } <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435, \u043d\u0430 \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u044d\u0442\u043e \u043d\u0430 \u043d\u0430\u0448\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/users username=johndoe <\/code><\/pre>\n<p>  <i>HTTPie<\/i> \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <i>username<\/i> \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u0435\u0433\u043e \u0432 <i>JSON<\/i>:<\/p>\n<pre><code class=\"javascript\">{     &quot;username&quot;: &quot;johndoe&quot; } <\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u043d\u0430\u0448\u0435\u043c\u0443 <i>API<\/i> \u043c\u0435\u0442\u043e\u0434\u043e\u043c <i>POST<\/i>. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<pre><code class=\"javascript\">&quot;_issues&quot;: {     &quot;firstname&quot;: &quot;required field&quot;,     &quot;lastname&quot;: &quot;required field&quot; } <\/code><\/pre>\n<p>  \u041c\u044b \u0432\u0438\u0434\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438 \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e. \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u0438\u0445 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/users username=johndoe firstname=John lastname=Doe HTTP\/1.0 201 CREATED Content-Length: 276 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:34:42 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,     &quot;_etag&quot;: &quot;24509359443095dd05dece6d0eb7d98cce70b076&quot;,     &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,     &quot;_links&quot;: {         &quot;self&quot;: {             &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,             &quot;title&quot;: &quot;User&quot;         }     },     &quot;_status&quot;: &quot;OK&quot;,     &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot; } <\/code><\/pre>\n<p>  \u041d\u0443 \u0432\u043e\u0442, \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0442\u0430\u043a \u043b\u0438 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/users HTTP\/1.0 200 OK Content-Length: 504 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:36:00 GMT Last-Modified: Sun, 07 Feb 2016 18:34:41 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0 X-Total-Count: 1  {     &quot;_items&quot;: [         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,             &quot;_etag&quot;: &quot;24509359443095dd05dece6d0eb7d98cce70b076&quot;,             &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,             &quot;active&quot;: true,             &quot;firstname&quot;: &quot;John&quot;,             &quot;lastname&quot;: &quot;Doe&quot;,             &quot;username&quot;: &quot;johndoe&quot;         }     ],     &quot;_links&quot;: {         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;users&quot;,             &quot;title&quot;: &quot;users&quot;         }     },     &quot;_meta&quot;: {         &quot;max_results&quot;: 25,         &quot;page&quot;: 1,         &quot;total&quot;: 1     } } <\/code><\/pre>\n<p>  \u041d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0439, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a. \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c (<i>\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u0435 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c<\/i>) \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <i>PUT<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044f\u0432\u043d\u043e (<i>\u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d POST<\/i>):<\/p>\n<pre><code class=\"bash\">$ http put http:\/\/0.0.0.0:5000\/users\/56b78e41cf7b35255aa5a1e6 username=janedoe firstname=&quot;Jane&quot; lastname=&quot;Doe&quot; HTTP\/1.0 403 FORBIDDEN Content-Length: 101 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:43:04 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_error&quot;: {         &quot;code&quot;: 403,         &quot;message&quot;: &quot;An etag must be provided to edit a document&quot;     },     &quot;_status&quot;: &quot;ERR&quot; } <\/code><\/pre>\n<p>  \u0423\u043f\u0441, \u043e\u0448\u0438\u0431\u043a\u0430. \u042f \u0432\u044b\u0448\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043e <a href=\"http:\/\/Data Integrity and Concurrency Control\">\u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u0442\u043e-\u0442\u043e \u0443\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0437\u0430\u043f\u0438\u0441\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u044b. \u0418 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0435\u0451 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435, \u0442\u043e \u0431\u0443\u0434\u0435\u0442\u0435 \u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u043e\u0434\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u044c, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0443\u044e.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u043c\u044b \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/ru.wikipedia.org\/wiki\/HTTP_ETag\">\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <i>ETag<\/i><\/a>. \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u2014 \u044d\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f <i>Eve<\/i> \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448\u0435\u043c\u0443 <i>API<\/i>, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0441 \u0442\u0435\u0445 \u0431\u044b\u043b\u0430 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0442\u043e \u043d\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http:\/\/python-eve.org\/features.html#conditional-requests\">\u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/a> \u0441 <i>HTTP<\/i> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c &quot;<i>If-Match<\/i>&quot;:<\/p>\n<pre><code class=\"bash\">$ http put http:\/\/0.0.0.0:5000\/users\/56b78e41cf7b35255aa5a1e6 &quot;If-Match&quot;:&quot;24509359443095dd05dece6d0eb7d98cce70b076&quot; username=janedoe firstname=&quot;Jane&quot; lastname=&quot;Doe&quot; HTTP\/1.0 200 OK Content-Length: 276 Content-Type: application\/json Date: Sun, 07 Feb 2016 18:46:56 GMT ETag: 0138d193174528c205827ba9af25b7b8fb93940e Last-Modified: Sun, 07 Feb 2016 18:46:56 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,     &quot;_etag&quot;: &quot;0138d193174528c205827ba9af25b7b8fb93940e&quot;,     &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,     &quot;_links&quot;: {         &quot;self&quot;: {             &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,             &quot;title&quot;: &quot;User&quot;         }     },     &quot;_status&quot;: &quot;OK&quot;,     &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 18:46:56 GMT&quot; } <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 <i>HTTP<\/i> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a <i>HTTPie<\/i>. \u042d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <i>ETag<\/i> \u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u042f \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c, \u043d\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0432\u0430\u043c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u043e\u0439, \u0435\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e\u0433\u043e \u0435\u0449\u0451 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438. <\/p>\n<p>  \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443 \u0441 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/groups title=&quot;Friends&quot; users:='[&quot;56b77466cf7b352414deb451&quot;]' HTTP\/1.0 422 UNPROCESSABLE ENTITY Content-Length: 220 Content-Type: application\/json Date: Sun, 07 Feb 2016 19:14:31 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_error&quot;: {         &quot;code&quot;: 422,         &quot;message&quot;: &quot;Insertion failure: 1 document(s) contain(s) error(s)&quot;     },     &quot;_issues&quot;: {         &quot;users&quot;: {             &quot;0&quot;: &quot;value '56b77466cf7b352414deb451' must exist in resource 'users', field '_id'.&quot;         }     },     &quot;_status&quot;: &quot;ERR&quot; } <\/code><\/pre>\n<p>  \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0442\u0430\u043a\u0438\u043c <i>_id<\/i> \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439: <\/p>\n<pre><code class=\"bash\">users:='[&quot;56b77466cf7b352414deb451&quot;]' <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/jkbrzt\/httpie#json\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043a HTTPie, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u043a\u0430\u043a \u0438 \u0441\u0430\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 <i>_id<\/i>:<\/p>\n<pre><code class=\"bash\">\u00bb http http:\/\/0.0.0.0:5000\/groups title=&quot;Friends&quot; users:='[&quot;56b78e41cf7b35255aa5a1e6&quot;]' HTTP\/1.0 201 CREATED Content-Length: 278 Content-Type: application\/json Date: Sun, 07 Feb 2016 19:21:42 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_created&quot;: &quot;Sun, 07 Feb 2016 19:21:41 GMT&quot;,     &quot;_etag&quot;: &quot;c6fc02a0bd4bae92a1310be0748ff8bc971ff209&quot;,     &quot;_id&quot;: &quot;56b79945cf7b35255aa5a1e7&quot;,     &quot;_links&quot;: {         &quot;self&quot;: {             &quot;href&quot;: &quot;groups\/56b79945cf7b35255aa5a1e7&quot;,             &quot;title&quot;: &quot;Group&quot;         }     },     &quot;_status&quot;: &quot;OK&quot;,     &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:21:41 GMT&quot; } <\/code><\/pre>\n<p>  \u00ab\u0423\u0441\u0451 \u0434\u043e\u0431\u0440\u0430\u00bb, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0430 \u043c\u043e\u044f \u043f\u0440\u0430\u0431\u0430\u0431\u0443\u0448\u043a\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/groups HTTP\/1.0 200 OK Content-Length: 488 Content-Type: application\/json Date: Sun, 07 Feb 2016 19:24:50 GMT Last-Modified: Sun, 07 Feb 2016 19:21:41 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0 X-Total-Count: 1  {     &quot;_items&quot;: [         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 19:21:41 GMT&quot;,             &quot;_etag&quot;: &quot;c6fc02a0bd4bae92a1310be0748ff8bc971ff209&quot;,             &quot;_id&quot;: &quot;56b79945cf7b35255aa5a1e7&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;groups\/56b79945cf7b35255aa5a1e7&quot;,                     &quot;title&quot;: &quot;Group&quot;                 }             },             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:21:41 GMT&quot;,             &quot;title&quot;: &quot;Friends&quot;,             &quot;users&quot;: [                 &quot;56b78e41cf7b35255aa5a1e6&quot;             ]         }     ],     &quot;_links&quot;: {         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;groups&quot;,             &quot;title&quot;: &quot;groups&quot;         }     },     &quot;_meta&quot;: {         &quot;max_results&quot;: 25,         &quot;page&quot;: 1,         &quot;total&quot;: 1     } } <\/code><\/pre>\n<p>  \u041f\u0440\u0430\u0431\u0430\u0431\u0443\u0448\u043a\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0431\u044b \u043f\u0440\u0430\u0432\u0430. \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c, \u043d\u043e \u043c\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0438\u043d\u0430\u0447\u0435.<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0433\u0440\u0443\u043f\u043f\u0443 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043d\u0435\u0451 \u0432\u0445\u043e\u0434\u044f\u0442, \u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u043e\u043c \u0432\u0438\u0434\u0435:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/groups\/56b79945cf7b35255aa5a1e7\/\\?embedded='{&quot;users&quot;:1}' HTTP\/1.0 200 OK Content-Length: 646 Content-Type: application\/json Date: Sun, 07 Feb 2016 19:38:27 GMT ETag: c6fc02a0bd4bae92a1310be0748ff8bc971ff209 Last-Modified: Sun, 07 Feb 2016 19:21:41 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_created&quot;: &quot;Sun, 07 Feb 2016 19:21:41 GMT&quot;,     &quot;_etag&quot;: &quot;c6fc02a0bd4bae92a1310be0748ff8bc971ff209&quot;,     &quot;_id&quot;: &quot;56b79945cf7b35255aa5a1e7&quot;,     &quot;_links&quot;: {         &quot;collection&quot;: {             &quot;href&quot;: &quot;groups&quot;,             &quot;title&quot;: &quot;groups&quot;         },         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;groups\/56b79945cf7b35255aa5a1e7&quot;,             &quot;title&quot;: &quot;Group&quot;         }     },     &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:21:41 GMT&quot;,     &quot;title&quot;: &quot;Friends&quot;,     &quot;users&quot;: [         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,             &quot;_etag&quot;: &quot;0138d193174528c205827ba9af25b7b8fb93940e&quot;,             &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 18:46:56 GMT&quot;,             &quot;active&quot;: true,             &quot;firstname&quot;: &quot;Jane&quot;,             &quot;lastname&quot;: &quot;Doe&quot;,             &quot;username&quot;: &quot;janedoe&quot;         }     ] } <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0441\u0438\u043c \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432 <i>XML<\/i>:<\/p>\n<pre><code class=\"xml\">$ http http:\/\/0.0.0.0:5000\/groups\/56b79945cf7b35255aa5a1e7\/\\?embedded='{&quot;users&quot;:1}' &quot;Accept&quot;:&quot;application\/xml&quot; HTTP\/1.0 200 OK Content-Length: 690 Content-Type: application\/xml; charset=utf-8 Date: Sun, 07 Feb 2016 19:43:36 GMT ETag: c6fc02a0bd4bae92a1310be0748ff8bc971ff209 Last-Modified: Sun, 07 Feb 2016 19:21:41 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  &lt;resource href=&quot;groups\/56b79945cf7b35255aa5a1e7&quot; title=&quot;Group&quot;&gt;     &lt;link href=&quot;groups&quot; rel=&quot;collection&quot; title=&quot;groups&quot; \/&gt;     &lt;link href=&quot;\/&quot; rel=&quot;parent&quot; title=&quot;home&quot; \/&gt;     &lt;_created&gt;Sun, 07 Feb 2016 19:21:41 GMT&lt;\/_created&gt;     &lt;_etag&gt;c6fc02a0bd4bae92a1310be0748ff8bc971ff209&lt;\/_etag&gt;     &lt;_id&gt;56b79945cf7b35255aa5a1e7&lt;\/_id&gt;     &lt;_updated&gt;Sun, 07 Feb 2016 19:21:41 GMT&lt;\/_updated&gt;     &lt;title&gt;Friends&lt;\/title&gt;     &lt;users&gt;         &lt;_created&gt;Sun, 07 Feb 2016 18:34:41 GMT&lt;\/_created&gt;         &lt;_etag&gt;0138d193174528c205827ba9af25b7b8fb93940e&lt;\/_etag&gt;         &lt;_id&gt;56b78e41cf7b35255aa5a1e6&lt;\/_id&gt;         &lt;_updated&gt;Sun, 07 Feb 2016 18:46:56 GMT&lt;\/_updated&gt;         &lt;active&gt;True&lt;\/active&gt;         &lt;firstname&gt;Jane&lt;\/firstname&gt;         &lt;lastname&gt;Doe&lt;\/lastname&gt;         &lt;username&gt;janedoe&lt;\/username&gt;     &lt;\/users&gt; &lt;\/resource&gt; <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (<i>\u0431\u0435\u0437 \u043f\u043e\u043b\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438<\/i>). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f <i>HTTP<\/i> \u043c\u0435\u0442\u043e\u0434\u043e\u043c <i>PATCH<\/i>:<\/p>\n<pre><code class=\"bash\">$ http patch http:\/\/0.0.0.0:5000\/users\/56b78e41cf7b35255aa5a1e6 firstname=John &quot;If-Match&quot;:&quot;0138d193174528c205827ba9af25b7b8fb93940e&quot; HTTP\/1.0 200 OK Content-Length: 276 Content-Type: application\/json Date: Sun, 07 Feb 2016 19:46:48 GMT ETag: 86f3495cf1d6edf301e25563099844bd816c5a3c Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,     &quot;_etag&quot;: &quot;86f3495cf1d6edf301e25563099844bd816c5a3c&quot;,     &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,     &quot;_links&quot;: {         &quot;self&quot;: {             &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,             &quot;title&quot;: &quot;User&quot;         }     },     &quot;_status&quot;: &quot;OK&quot;,     &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:46:47 GMT&quot; } <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b\u0430 \u0431\u044b \u0431\u0430\u0431\u0443\u043b\u044f?<\/p>\n<pre><code class=\"bash\">\u00bb http http:\/\/0.0.0.0:5000\/users\/56b78e41cf7b35255aa5a1e6 HTTP\/1.0 200 OK Content-Length: 431 Content-Type: application\/json Date: Sun, 07 Feb 2016 19:50:06 GMT ETag: 86f3495cf1d6edf301e25563099844bd816c5a3c Last-Modified: Sun, 07 Feb 2016 19:46:47 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,     &quot;_etag&quot;: &quot;86f3495cf1d6edf301e25563099844bd816c5a3c&quot;,     &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,     &quot;_links&quot;: {         &quot;collection&quot;: {             &quot;href&quot;: &quot;users&quot;,             &quot;title&quot;: &quot;users&quot;         },         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,             &quot;title&quot;: &quot;User&quot;         }     },     &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:46:47 GMT&quot;,     &quot;active&quot;: true,     &quot;firstname&quot;: &quot;John&quot;,     &quot;lastname&quot;: &quot;Doe&quot;,     &quot;username&quot;: &quot;janedoe&quot; } <\/code><\/pre>\n<p>  \u00ab\u0423\u0441\u0451 \u0434\u043e\u0431\u0440\u0430\u00bb. \u041c\u043d\u0435 \u0442\u0430\u043a \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044f \u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0430\u0447\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">$ echo '[{&quot;username&quot;: &quot;userone&quot;, &quot;firstname&quot;: &quot;First&quot;, &quot;lastname&quot;:&quot;Last&quot;},{&quot;username&quot;:&quot;usertwo&quot;, &quot;firstname&quot;:&quot;First&quot;, &quot;lastname&quot;:&quot;Last&quot;}]' | http http:\/\/0.0.0.0:5000\/users HTTP\/1.0 201 CREATED Content-Length: 585 Content-Type: application\/json Date: Sun, 07 Feb 2016 20:01:33 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0  {     &quot;_items&quot;: [         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;,             &quot;_etag&quot;: &quot;6f397b570ef12769d372c902fa6149bb7e9eaf89&quot;,             &quot;_id&quot;: &quot;56b7a29dcf7b35255aa5a1e8&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b7a29dcf7b35255aa5a1e8&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_status&quot;: &quot;OK&quot;,             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;         },         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;,             &quot;_etag&quot;: &quot;378f30b37724139c213a85079185226ab2b209f3&quot;,             &quot;_id&quot;: &quot;56b7a29dcf7b35255aa5a1e9&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b7a29dcf7b35255aa5a1e9&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_status&quot;: &quot;OK&quot;,             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;         }     ],     &quot;_status&quot;: &quot;OK&quot; } <\/code><\/pre>\n<p>  \u041d\u0430\u0439\u0434\u0451\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f &quot;<i>John Doe<\/i>&quot; \u043f\u043e \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/users\\?where='{&quot;firstname&quot;:&quot;John&quot;}' HTTP\/1.0 200 OK Content-Length: 535 Content-Type: application\/json Date: Sun, 07 Feb 2016 20:05:28 GMT Last-Modified: Sun, 07 Feb 2016 19:46:47 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0 X-Total-Count: 1  {     &quot;_items&quot;: [         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,             &quot;_etag&quot;: &quot;86f3495cf1d6edf301e25563099844bd816c5a3c&quot;,             &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:46:47 GMT&quot;,             &quot;active&quot;: true,             &quot;firstname&quot;: &quot;John&quot;,             &quot;lastname&quot;: &quot;Doe&quot;,             &quot;username&quot;: &quot;janedoe&quot;         }     ],     &quot;_links&quot;: {         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;users?where={\\&quot;firstname\\&quot;:\\&quot;John\\&quot;}&quot;,             &quot;title&quot;: &quot;users&quot;         }     },     &quot;_meta&quot;: {         &quot;max_results&quot;: 25,         &quot;page&quot;: 1,         &quot;total&quot;: 1     } } <\/code><\/pre>\n<p>  \u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e \u0438\u0445 \u043b\u043e\u0433\u0438\u043d\u0443 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435:<\/p>\n<pre><code class=\"bash\">$ http http:\/\/0.0.0.0:5000\/users\\?sort\\=-username HTTP\/1.0 200 OK Content-Length: 1203 Content-Type: application\/json Date: Sun, 07 Feb 2016 20:08:08 GMT Last-Modified: Sun, 07 Feb 2016 20:01:33 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0 X-Total-Count: 3  {     &quot;_items&quot;: [         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;,             &quot;_etag&quot;: &quot;378f30b37724139c213a85079185226ab2b209f3&quot;,             &quot;_id&quot;: &quot;56b7a29dcf7b35255aa5a1e9&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b7a29dcf7b35255aa5a1e9&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;,             &quot;active&quot;: true,             &quot;firstname&quot;: &quot;First&quot;,             &quot;lastname&quot;: &quot;Last&quot;,             &quot;username&quot;: &quot;usertwo&quot;         },         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;,             &quot;_etag&quot;: &quot;6f397b570ef12769d372c902fa6149bb7e9eaf89&quot;,             &quot;_id&quot;: &quot;56b7a29dcf7b35255aa5a1e8&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b7a29dcf7b35255aa5a1e8&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 20:01:33 GMT&quot;,             &quot;active&quot;: true,             &quot;firstname&quot;: &quot;First&quot;,             &quot;lastname&quot;: &quot;Last&quot;,             &quot;username&quot;: &quot;userone&quot;         },         {             &quot;_created&quot;: &quot;Sun, 07 Feb 2016 18:34:41 GMT&quot;,             &quot;_etag&quot;: &quot;86f3495cf1d6edf301e25563099844bd816c5a3c&quot;,             &quot;_id&quot;: &quot;56b78e41cf7b35255aa5a1e6&quot;,             &quot;_links&quot;: {                 &quot;self&quot;: {                     &quot;href&quot;: &quot;users\/56b78e41cf7b35255aa5a1e6&quot;,                     &quot;title&quot;: &quot;User&quot;                 }             },             &quot;_updated&quot;: &quot;Sun, 07 Feb 2016 19:46:47 GMT&quot;,             &quot;active&quot;: true,             &quot;firstname&quot;: &quot;John&quot;,             &quot;lastname&quot;: &quot;Doe&quot;,             &quot;username&quot;: &quot;janedoe&quot;         }     ],     &quot;_links&quot;: {         &quot;parent&quot;: {             &quot;href&quot;: &quot;\/&quot;,             &quot;title&quot;: &quot;home&quot;         },         &quot;self&quot;: {             &quot;href&quot;: &quot;users?sort=-username&quot;,             &quot;title&quot;: &quot;users&quot;         }     },     &quot;_meta&quot;: {         &quot;max_results&quot;: 25,         &quot;page&quot;: 1,         &quot;total&quot;: 3     } } <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u043c \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:<\/p>\n<pre><code class=\"bash\">$ http delete http:\/\/0.0.0.0:5000\/users HTTP\/1.0 204 NO CONTENT Content-Length: 0 Content-Type: application\/json Date: Sun, 07 Feb 2016 20:10:06 GMT Server: Eve\/0.6.1 Werkzeug\/0.10.4 Python\/3.5.0 <\/code><\/pre>\n<p>  \u042f \u0431\u044b \u043d\u0435 \u0441\u0442\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 <i>production<\/i>. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <i>RESOURCE_METHODS<\/i> (<i>\u0441\u0442\u043e\u0438\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 DELETE<\/i>):<\/p>\n<pre><code class=\"python\">RESOURCE_METHODS = ['GET', 'POST', 'DELETE'] <\/code><\/pre>\n<p>  <\/p>\n<h4><font color=\"#d62631\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h4>\n<p>  \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0435 <a href=\"http:\/\/python-eve.org\/features.html\">\u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/a> Eve, \u043d\u043e \u0434\u0430\u0436\u0435 c \u0443\u0447\u0451\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u2013 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <i>REST API<\/i>. <\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 RESTful \u0441\u0435\u0440\u0432\u0438\u0441 \u044d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043f\u0430\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f Node.js \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438 \u0441 \u043d\u0443\u043b\u044f, \u0430 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430 \u043e\u0434\u0438\u043d \u0447\u0430\u0441. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/nicolaiarocci\/eve\/commits\/develop\">\u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>, \u0447\u0442\u043e \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u044b \u0447\u0430\u0441\u043e\u0432\/\u0434\u043d\u0435\u0439\/\u043d\u0435\u0434\u0435\u043b\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p>  <a href=\"http:\/\/nicolaiarocci.com\/\">Nicola Iarocci<\/a>, \u0430\u0432\u0442\u043e\u0440 <a href=\"http:\/\/python-eve.org\/\">Eve<\/a>, \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f <i>REST API<\/i>, \u0443\u0434\u0435\u043b\u0438\u043b \u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<h4><font color=\"#d62631\">\u0421\u0441\u044b\u043b\u043a\u0438<\/font><\/h4>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/python-eve.org\">Python Eve<\/a><\/li>\n<li><a href=\"http:\/\/python-eve.org\/rest_api_for_humans.html\">\u041f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f Python Eve<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jkbrzt\/httpie\">HTTPie<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vkozlovski\/python-eve\">\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 GitHub<\/a><\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/twitter.com\/vkozlovski\">\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043c\u0435\u043d\u044f \u0432 Twitter<\/a>, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0435, \u0441\u0432\u043e\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445, \u043e python \u0438 \u0432\u0441\u0451\u043c, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. <\/p>\n<p>  P.S. <i>\u042f \u0438\u0449\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u0441\u0442\u0430\u0440\u0442\u0430\u043f, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0443 \u043c\u0435\u043d\u044f <a href=\"http:\/\/habrahabr.ru\/users\/vladkozlovski\/\">\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435<\/a>.<\/i>               <\/p>\n<div class=\"clear\"><\/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:\/\/habrahabr.ru\/post\/276731\/\"> https:\/\/habrahabr.ru\/post\/276731\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <a href=\"https:\/\/habrahabr.ru\/post\/276731\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2f2\/e45\/c50\/2f2e45c507a846ec88030b21a1d0610c.png\"\/><\/a><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440, \u043c\u043d\u0435 28 \u043b\u0435\u0442 \u0438 \u044f <s>\u043d\u0430\u0440\u043a\u043e\u043c\u0430\u043d<\/s> \u043d\u0430\u0440\u043a\u043e\u043c\u0430\u043d. \u041c\u043e\u0439 \u043d\u0430\u0440\u043a\u043e\u0442\u0438\u043a \u2013 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430. \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u044f \u043f\u043e\u0434\u0441\u0435\u043b \u0438\u0437-\u0437\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0437\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0435\u043d\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u0438\u043b\u0438 \u043f\u0440\u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0438. \u0412\u0440\u0430\u0447\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043e, \u043c\u043e\u043b \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0437\u043c \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0435\u043c\u043b\u0435\u043d\u0438\u0435 \u043a \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443. \u0427\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0432\u043e\u0442 \u044f \u0438 \u043f\u043e\u0434\u0441\u0435\u043b. \u042f \u043d\u0435 \u0441\u0442\u0430\u043b \u0441 \u043d\u0438\u043c\u0438 \u0441\u043f\u043e\u0440\u0438\u0442\u044c \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u0438\u0441\u043a\u0430\u0442\u044c \u0432\u0438\u043d\u043e\u0432\u043d\u0438\u043a\u043e\u0432 \u043c\u043e\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0440\u0435\u0448\u0438\u043b \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. <\/p>\n<p>  \u041c\u0438\u0440 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d, \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0432\u0435\u0449\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u2013 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0451 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u043e. \u041b\u044e\u0434\u044f\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u043e\u043d\u0438 \u043e\u0449\u0443\u0449\u0430\u044e\u0442 \u0441\u0432\u043e\u044e \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043f\u0443\u0441\u0442\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u0441\u0442\u0440\u0430\u0445\u0430 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.  <\/p>\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-273806","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273806","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=273806"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273806\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=273806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=273806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=273806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}