{"id":280812,"date":"2016-11-11T16:25:04","date_gmt":"2016-11-11T13:25:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=280812"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=280812","title":{"rendered":"Qt \/ QML REST Client"},"content":{"rendered":"<p>\u0423\u0432\u0438\u0434\u0435\u043b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432 \u043b\u0435\u043d\u0442\u0435 <a href=\"https:\/\/habrahabr.ru\/post\/314932\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0432\u0435\u0434\u044c \u043f\u0440\u043e \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u0445\u0430\u0431\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u0435\u0445\u043b\u0438\u0434\u043e\u043c \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c\u0438 iOS\/Android, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435 API \u043d\u0430 Django\/Yii2\/\u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u0449\u0438\u043d\u0435. \u0418 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0443 \u043d\u0438\u0445 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 REST API, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0432 Qt, \u0442.\u043a. \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 REST \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Qt \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e.<\/p>\n<p>  \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u041d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0445\u0435\u043c\u0430, \u0430 \u043f\u043e\u0434 \u043d\u0435\u0439, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0434\u0435\u0438, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/538\/52c\/523\/53852c523c21a18d27b48f726d2edcd1.jpg\" alt=\"image\"\/><br \/>  <a name=\"habracut\"><\/a><br \/>  \u0418\u0442\u0430\u043a, \u0432\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043c:  <\/p>\n<ol>\n<li>\u0418\u0434\u0435\u044f \u0438 \u0444\u0438\u0447\u0438<\/li>\n<li>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/li>\n<li>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/li>\n<li>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u043f\u0440\u0438\u043c\u0435\u0440<\/li>\n<\/ol>\n<p>  <\/p>\n<h4>\u0418\u0434\u0435\u044f \u0438 \u0444\u0438\u0447\u0438<\/h4>\n<p>  \u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438, \u043b\u044e\u0431\u043e\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 REST API \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u0438\u0435\u043c\u0443 HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0442\u0434\u0430\u0447\u0435 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043e\u0447\u043d\u044b\u0445\/\u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 JSON\/XML.<\/p>\n<p>  \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432 Qt \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u0430\u043a \u0447\u0442\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0435\u0439.<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u043e\u0441\u044b\u043b\u043e\u0432, \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c:  <\/p>\n<ul>\n<li>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438\u0437 C++ \u0438 QML;<\/li>\n<li>\u041e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 QAbstractListModel \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 (\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c) \u043c\u0435\u0442\u043e\u0434\u043e\u0432 fetchMore() \u0438 canFetchMore() \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 (ListView, GridView, etc);<\/li>\n<li>\u041f\u0440\u0438\u0435\u043c \u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 JSON\/XML;<\/li>\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f (pagination): \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0446\u0438\u0430\u043c (per page), \u043f\u043e \u043b\u0438\u043c\u0438\u0442\u0443\/\u0441\u0434\u0432\u0438\u0433\u0443 (limit\/offset), \u043f\u043e \u043a\u0443\u0440\u0441\u043e\u0440\u0443 (cursor);<\/li>\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438;<\/li>\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438;<\/li>\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445;<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438;<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 API \u0431\u0435\u0437 \u043c\u043e\u0434\u0435\u043b\u0435\u0439;<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043b\u0435\u043d\u0438\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (lazy load) \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 \u00ab\u0421\u043f\u0438\u0441\u043e\u043a -&gt; \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u00bb;<\/li>\n<li>\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 API \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 API \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438;<\/li>\n<li>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 API \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438);<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 API \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 API \u043a\u043b\u0430\u0441\u0441\u044b \u0431\u044b\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430;<\/li>\n<li>\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445.<\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438 \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f API, \u043a\u0430\u043a <a href=\"https:\/\/github.com\/yiisoft\/yii2\/blob\/master\/docs\/guide-ru\/rest-quick-start.md\">Yii2-REST<\/a> \u0438 <a href=\"http:\/\/www.django-rest-framework.org\/\">Django REST framework<\/a>, \u0442.\u043a. \u044d\u0442\u043e \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f REST-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u0440\u043e\u0432 \u0438 \u043f\u0440\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430\u0445 \u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 REST \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<h4>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u0432\u0441\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 QAbstractListModel, \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 Qt C++\/QML. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0435.<\/p>\n<p>  \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0445\u0435\u043c\u0435 \u0432\u044b\u0448\u0435, \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0432\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430: APIBase (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a QObject) \u0438 BaseRestListModel (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a QAbstractListModel).<\/p>\n<ul>\n<li>APIBase \u2014 \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0445 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u0412\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u0435\u0442\u044c\u044e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0435\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430\u0445;<\/li>\n<li>BaseRestListModel \u2014 \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u043c, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0438\u0434\u0435\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041a\u043b\u0430\u0441\u0441 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API-\u043a\u043b\u0430\u0441\u0441\u043e\u043c. \u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0443\u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u2014 AbstractJsonRestListModel \u0438 AbstractXmlRestListModel. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043d\u0430\u0437\u0432\u043d\u0438\u044f, \u044d\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 json\/xml. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (csv? =) ), \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043f\u043e \u0432\u0441\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u0438 \u0432\u044b\u0448\u0435 \u043f\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c.<\/li>\n<\/ul>\n<p>  \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 APIBase:  <\/p>\n<ul>\n<li>accept \u2014 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 AbstractJsonRestListModel \u0438 AbstractXmlRestListModel, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e application\/json \u0438 application\/xml;<\/li>\n<li>acceptHeader \u2014 \u0438\u043c\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 accept. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00abAccept\u00bb. \u0421\u043c\u044b\u0441\u043b \u044d\u0442\u043e\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438 Yii2 \u0438 Django \u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0443\u043c\u0435\u044e\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0411\u0414 \u0432 json\/xml \u043d\u0430 \u043b\u0435\u0442\u0443;<\/li>\n<li>baseUrl \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0448 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 url, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432 \u043a\u043e\u043d\u0435\u0446 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 API \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b;<\/li>\n<li>authToken \u2014 \u0442\u043e\u043a\u0435\u043d \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0441 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u043c (\u043d\u0443 \u0442\u0430\u043c, \u00abBearer 8aef452ee3b32466209535b96d456b06\u00bb);<\/li>\n<li>authTokenHeader \u2014 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441 \u0442\u043e\u043a\u0435\u043d\u043e\u043c, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u00abAuthorization\u00bb;<\/li>\n<\/ul>\n<p>  \u042d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043b\u044e\u0431\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c. \u041a\u0430\u0436\u0434\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0435-\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0435 \u0438 \u0432 QML (\u0442.\u043a. \u0432\u0441\u0435 \u043e\u043d\u0438 \u2014 Q_PROPERTY).<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API, \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 APIBase \u0438 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 handleRequest, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u043c\u043e\u0434\u0435\u043b\u0438 (\u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435) \u0438 protected \u043c\u0435\u0442\u043e\u0434\u044b get, post, put, deleteResource, head, options, patch (\u0432\u0441\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u044d\u0442\u0438\u043c \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u0432 HTTP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435).<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0435, \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043a\u043e\u0434 \u043f\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043c\u043e\u0434\u0435\u043b\u0438 (\u0447\u0438\u0442\u0430\u0439 \u2014 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f) \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0430 \u0434\u0430\u043b\u0435\u0435 \u2014 \u0434\u0435\u043b\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f QUrl\/QUrlQuery.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e API \u043a\u043b\u0430\u0441\u0441\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438.  <\/p>\n<h5>1. handleRequest \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 ReadOnly-\u043c\u043e\u0434\u0435\u043b\u0438<\/h5>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438. \u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 JsonRestListModel \u0438 XmlRestListModel. <\/p>\n<p>  \u041e\u0431\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f ReadOnly \u0438 \u0441\u0440\u0430\u0437\u0443 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u0437 C++\/QML<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ReadOnly-\u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 handleRequest \u0432 API-\u043a\u043b\u0430\u0441\u0441\u0435, \u0432\u043e\u0442 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:  <\/p>\n<pre><code class=\"cpp\">virtual QNetworkReply *handleRequest(QString path,  \t\t\t\t\tQStringList sort,  \t\t\t\t\tPagination *pagination,                                         QVariantMap filters = QVariantMap(),                                         QStringList fields = QStringList(),  \t\t\t\t\tQString id = 0) <\/code><\/pre>\n<p>  \u0433\u0434\u0435 path \u2014 API-\u043c\u0435\u0442\u043e\u0434, sort \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, pagination \u2014 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0435\u0439\u0434\u0436\u0438\u043d\u0433\u0430, filters \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, fields \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, id \u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 ReadOnly-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a API \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0438\u0434\u0435:  <\/p>\n<pre><code class=\"cpp\">QNetworkReply *JsonRestListModel::fetchMoreImpl(const QModelIndex &parent) {     Q_UNUSED(parent)     return apiInstance()-&gt;handleRequest(requests()-&gt;get(), sort(), pagination(), filters(), fields()); } <\/code><\/pre>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0432 QML \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438:  <\/p>\n<pre><code class=\"javascript\">... MyApi {     id: myApi }  JsonRestListModel {     id: jsonSampleModel     api: myApi \/\/\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 API \u043e\u0431\u044a\u0435\u043a\u0442      idField: 'id' \/\/\u043f\u043e\u043b\u0435 - \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0438      \/\/\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 API \u0434\u043b\u044f handleRequest     \/\/\u0432 ReadOnly \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e readOnly \u043c\u0435\u0442\u043e\u0434\u044b get (\u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0435\u0439) \u0438 getDetails (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u0438)     \/\/\u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043b-\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u043c. \u043a\u043b\u0430\u0441\u0441 Requests     requests {         get: &quot;\/v1\/coupon&quot;         getDetails: &quot;\/v1\/coupon\/{id}&quot;     }      \/\/\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430     filters: {'isArchive': '0'}      \/\/\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439     fields: ['id','title']      \/\/\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438     sort: ['-id']      \/\/\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438     pagination {         policy: Pagination.PageNumber \/\/\u0442\u0438\u043f - \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b         perPage: 20 \/\/\u043a\u043e\u043b-\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443     }      \/\/\u0414\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438     Component.onCompleted: { reload(); } } ... <\/code><\/pre>\n<p>  \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e API \u043a\u043b\u0430\u0441\u0441 \u0438 \u043d\u0435 \u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439.<br \/>  \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u0432\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0437\u0434\u0435\u0441\u044c API \u043a\u043b\u0430\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0438\u0446\u043e\u043d\u0430\u043b.<\/p>\n<h5>2. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/h5>\n<p>  \u0415\u0441\u043b\u0438 ReadOnly \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 AbstractJsonRestListModel \u0438 AbstractXmlRestListModel \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043f\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<h5>3. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 API-\u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e<\/h5>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0432\u043e\u0432\u0441\u0435 \u0431\u0435\u0437 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043e\u043f\u0438\u0441\u0430\u0432 \u0432\u0441\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 APi \u043a\u043b\u0430\u0441\u0441\u0435, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 replyFinished \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 API \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/p>\n<p>  \u0425\u043c\u2026 \u0423\u0432\u043b\u0435\u043a\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u2026 \u0418\u0434\u0435\u043c \u0434\u0430\u043b\u0435\u0435, \u043a \u043c\u043e\u0434\u0435\u043b\u044f\u043c. \u041a\u0430\u043a \u044f \u0438 \u0441\u043a\u0430\u0437\u0430\u043b, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u2014 \u044d\u0442\u043e BaseRestListModel. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043a\u043b\u0430\u0441\u0441\u0430:  <\/p>\n<ul>\n<li>APIBase *api \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 API \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u043e\u0434\u0435\u043b\u0438. \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u0441 \u043e\u0434\u043d\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 API. \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u043a\u0430\u043a \u0432 QML (\u0432\u044b\u0448\u0435), \u0442\u0430\u043a \u0438 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u0438\u0437 C++;<\/li>\n<li>QStringList sort \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438. \u042d\u0442\u043e QStringList, \u0433\u0434\u0435 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 = 1 \u043f\u043e\u043b\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u0430\u043a \u043e\u043d\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u2014 \u043d\u0430\u043c \u043f\u043e\u0444\u0438\u0433. \u041f\u0440\u0438\u043c\u0435\u0440: [&#8216;-id&#8217;, &#8216;name&#8217;] \u2014 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u044f id \u0438 \u043f\u043e \u0438\u043c\u0435\u043d\u0438;<\/li>\n<li>Pagination *pagination \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438. Pagination \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u043e \u043d\u0435\u043c \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435;<\/li>\n<li>QVariantMap filters \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438, \u0432\u043d\u0443\u0442\u0440\u0438 \u2014 QVariantMap, \u0438\u0437 QML \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a: &quot;{&#8216;isArchive&#8217;: &#8216;0&#8217;}&quot;, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u043f\u043e\u043b\u0435 isArchive \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0432\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0443\u043b\u044e\u00bb. \u0412 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f &quot;&gt;, &lt;, &gt;=, &lt;=&quot; \u2014 \u0442\u0443\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u043c\u043e\u0433 \u043f\u043e\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443;<\/li>\n<li>QStringList fields \u2014 \u0442.\u043a. REST \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f, \u0430 \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u043a\u0430\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435 20 \u043f\u043e\u043b\u0435\u0439, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0442\u0438\u043f TEXT \u0438 BLOB, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e 2-3 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u043e\u043b\u044f, \u0442\u043e \u0438 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043b\u0435, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u0435\u0439;<\/li>\n<li>QString idField \u2014 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u043f\u043e \u043d\u0435\u043c\u0443 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0445 (Details) \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438;<\/li>\n<li>QString fetchDetailLastId \u2014 \u043a\u043b\u044e\u0447 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u043a\u0430;<\/li>\n<li>DetailsModel *detailsModel \u2014 \u0441\u043f\u0435\u0446. \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0443\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0439) \u0437\u0430\u043f\u0438\u0441\u0438. \u042d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0437\u0430\u043f\u0438\u0441\u0438. \u041d\u0443 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043b\u0438\u0441\u0442\u0430\u0435\u043c \u043c\u044b \u043b\u0435\u043d\u0442\u0443 \u043d\u0430 YouTube, \u0412\u041a, \u041f\u0438\u043a\u0430\u0431\u0443\u2026 \u041a\u043b\u0438\u043a\u0430\u0435\u043c \u043d\u0430 \u043f\u043e\u0441\u0442 \u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0438\u043d\u0444\u043e \u043e \u0432\u0438\u0434\u0435\u043e \u0438 \u043f\u0440\u043e\u0447\u0430\u044f \u0431\u0430\u0431\u0443\u0439\u043d\u044f;<\/li>\n<li>LoadingStatus loadingStatus \u2014 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0441\u0432\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e. \u041c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: Idle, IdleDetails, RequestToReload, FullReloadProcessing, LoadMoreProcessing, LoadDetailsProcessing, Error;<\/li>\n<li>loadingErrorString, loadingErrorCode \u2014 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430;<\/li>\n<li>count \u2014 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438.<\/li>\n<\/ul>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435, \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f Q_PROPERTY.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u0430\u0436\u0434\u0430\u044f \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043e\u0442 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u0432 \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:  <\/p>\n<ul>\n<li>void reload() \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438;<\/li>\n<li>void fetchDetail(QString id) \u2014 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u044b \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044c DetailsModel, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e *detailsModel;<\/li>\n<li>void requestToReload() \u2014 \u043b\u0438\u0448\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 RequestToReload, \u0431\u0435\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u043e\u043f. \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f GUI \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 fetchDetailImpl;<\/li>\n<li>void forceIdle() \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0432 Idle \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/li>\n<li>bool canFetchMore() \u2014 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0448\u0430\u0435\u0442 \u0438\u043d\u0444\u0443 \u043e \u0442\u043e\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0435\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f. \u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 ListView, GridView, PathView;<\/li>\n<li>void fetchMore() \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0435\u0442\u043e\u0434, \u0434\u043b\u044f \u043f\u043e\u0443\u043b\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0439 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c fetchMoreImpl;<\/li>\n<li>int rowCount() \u2014 \u043a\u043e\u043b-\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442;<\/li>\n<\/ul>\n<p>  \u041e\u0442\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0442 AbstractJsonRestListModel \u0438\u043b\u0438 AbstractXmlRestListModel, \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u044f\u0434 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:  <\/p>\n<ul>\n<li>virtual QNetworkReply *fetchMoreImpl(const QModelIndex &#038;parent) \u2014 \u043c\u0435\u0442\u043e\u0434, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 API;<\/li>\n<li>virtual QNetworkReply *fetchDetailImpl(QString id) \u2014 \u043c\u0435\u0442\u043e\u0434, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u0437\u0430\u043f\u0438\u0441\u0438;<\/li>\n<li>virtual QVariantMap preProcessItem(QVariantMap item) \u2014 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u0437 JSON\/XML \u0438 \u043f\u0435\u0440\u0435\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432 \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u043e\u043e\u0431\u0449\u0435, \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u0435\u043a\u0435\u043d\u0434-\u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0430, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u0435 \u0434\u0430\u0442\u044b \u0432 5 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0447\u0435\u043c \u0433\u043e\u043d\u044f\u0442\u044c +5 \u043f\u043e\u043b\u0435\u0439 \u043f\u043e \u0441\u0435\u0442\u0438;<\/li>\n<li>virtual QVariantList getVariantList(QByteArray bytes) \u2014 \u043c\u0435\u0442\u043e\u0434 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 JSON\/XML, \u043e\u043d \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0432 AbstractJsonRestListModel \u0438 AbstractXmlRestListModel, \u0432\u0430\u043c \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e \u043d\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438;<\/li>\n<li>virtual QVariantMap getVariantMap(QByteArray bytes) \u2014 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443, \u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442 \u043d\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0430 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442.<\/li>\n<\/ul>\n<p>  \u041c\u043e\u0434\u0435\u043b\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0435\u0449\u0435 \u043a\u0443\u0447\u0443 \u0432\u0441\u0435\u0433\u043e, \u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445, \u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e\u0431 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0443\u0436\u0434\u044b. \u0412\u0441\u0435 \u0434\u043e\u043f. \u043c\u0435\u0442\u043e\u0434\u044b \u0432 protected \u0441\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0432\u0430\u0448\u0435, \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0432\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 \u2014 Pagination \u0438 DetailsModel. <br \/>  \u0421 DetailsModel \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u041f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u044d\u043b\u0435\u043c\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0438\u043c\u0438 \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c, \u043e\u0442\u0434\u0430\u0435\u043c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043c\u0430\u043b\u043e\u0441\u0442\u044c \u0438\u0437\u0432\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 ListView \u0441 \u043e\u0434\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u044b \u0434\u0435\u043b\u0435\u0433\u0430\u0442 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u2014 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u00ab\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00bb.<br \/>  \u0421 Pagination \u0442\u043e\u0436\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043b\u0438\u0448\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438. \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0431\u043e\u0440 \u0441\u0432\u043e\u0439\u0441\u0442\u0432:  <\/p>\n<ul>\n<li>PaginationPolicy policy \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f None, PageNumber, LimitOffset, Cursor, Infinity. \u0414\u0443\u043c\u0430\u044e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043f\u043e\u043b\u0435\u0439 \u0431\u0435\u0437 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438;<\/li>\n<li>\u0414\u043b\u044f policy PageNumber \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 perPage, currentPage\/currentPageHeader (readOnly \u2014 \u0442\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u0437 \u0445\u0438\u0434\u0435\u0440\u0430 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430), pageCount\/pageCountHeader (\u0442\u0430\u043a\u0436\u0435 \u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430). \u0422\u043e \u0435\u0441\u0442\u044c, \u0437\u0430\u0434\u0430\u0435\u043c perPage, \u043f\u043e\u0443\u043b\u0447\u0430\u0435\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043a\u043e\u043b-\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u044e\u0437\u0430\u0435\u043c \u0432 canFetchMore;<\/li>\n<li>\u0414\u043b\u044f policy LimitOffset \u0438 Cursor \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 ReadOnly \u043f\u043e\u043b\u044f totalCount\/totalCountHeader. \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u043e\u0443\u043b\u0447\u0430\u0435\u043c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043d\u0444\u0443 \u043f\u043e \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043b-\u0432\u0443 \u0437\u0430\u043f\u0438\u0441\u0435\u0439;<\/li>\n<li>\u0414\u043b\u044f LimitOffset \u0437\u0430\u0434\u0430\u0435\u043c limit \u0438 offset;<\/li>\n<li>\u0414\u043b\u044f Cursor \u0437\u0430\u0434\u0430\u0435\u043c cursorQueryParam \u0438 cursorValue.<\/li>\n<\/ul>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0435, \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0440\u0430\u0437\u0440\u0443\u043b\u0438\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 ListView \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u043c\u0430\u043a\u0441. \u043a\u043e\u043b-\u0432\u0430.<\/p>\n<p>  \u0410\u0445 \u0434\u0430, \u0435\u0449\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 Requests, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 ReadOnly \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0438 \u0432 QML. \u0413\u043b\u044f\u043d\u044c\u0442\u0435 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u0442\u0430\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e)<\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0443 \u043c\u0435\u043d\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044f \u043f\u0438\u0441\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0435 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u0434\u0435\u043c\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u0412\u043e\u0442 \u043d\u0430 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.  <\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h4>\n<p>  \u0415\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u0438\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Yii2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\u2026 \u043d\u0435 \u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a\u043e\u043c\u0443, \u0430 \u0442\u043e \u0437\u043d\u0430\u044e \u044f \u0445\u0430\u0431\u0440)))<\/p>\n<p>  \u0422\u0430\u043a, \u0432\u043e\u0442 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e API \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0435\u043c\u043a\u0438.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 API \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/v1\/categories<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>[{ &quot;id&quot;: 1, &quot;sourceServiceId&quot;: 2, &quot;categoryName&quot;: &quot;\u0410\u043a\u0446\u0438\u0438&quot;, &quot;categoryCode&quot;: &quot;aktsii&quot;, &quot;categoryIdentifier&quot;: &quot;0&quot;, &quot;parentCategoryIdentifier&quot;: &quot;0&quot;, &quot;categoryAdditionalInfo&quot;: &quot;0&quot;, &quot;isActive&quot;: 1 },   { &quot;id&quot;: 2, &quot;sourceServiceId&quot;: 2, &quot;categoryName&quot;: &quot;\u041a\u0443\u043f\u043e\u043d\u044b&quot;, &quot;categoryCode&quot;: &quot;kupony&quot;, &quot;categoryIdentifier&quot;: &quot;28&quot;, &quot;parentCategoryIdentifier&quot;: &quot;28&quot;, &quot;categoryAdditionalInfo&quot;: &quot;https:\/\/blizzard.kz\/kuponator\/categ\/28&quot;, &quot;isActive&quot;: 1 } , ...] <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/v1\/coupon<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>[{ &quot;id&quot;: 1, &quot;sourceServiceId&quot;: 1, &quot;cityId&quot;: 1, &quot;createTimestamp&quot;: &quot;2015-03-12 14:01:57&quot;, &quot;lastUpdateDateTime&quot;: &quot;2016-10-20 03:54:47&quot;, &quot;recordHash&quot;: &quot;e7b01c1a69bc66e1f1a62d8fcb0825de&quot;, &quot;title&quot;: &quot;Home Club&quot;, &quot;shortDescription&quot;: &quot;\u0410\u0440\u0435\u043d\u0434\u0430 \u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0430 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u0430\u043b\u044c\u043d\u044f\u043c\u0438, \u0433\u043e\u0440\u043a\u0438, \u0441\u0430\u0443\u043d\u0430, \u0434\u0430\u0440\u0442\u0441 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435&quot;, &quot;longDescription&quot;: &quot; \u041f\u0440\u0435\u0434\u043f\u0440\u0430\u0437\u0434\u043d\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u043a\u0438 \u2013 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0435\u0437\u0434\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0433\u043e\u0440\u043e\u0434\u0430. \u041e\u0442\u0434\u043e\u0445\u043d\u0438\u0442\u0435 \u043e\u0442 \u043c\u0430\u0448\u0438\u043d, \u043f\u0440\u043e\u0431\u043e\u043a \u0438 \u0441\u043c\u043e\u0433\u0430 \u2013 \u043f\u0440\u0438\u0435\u0437\u0436\u0430\u0439\u0442\u0435 \u0432 \u0441\u0435\u043c\u0435\u0439\u043d\u043e-\u043e\u0437\u0434\u043e\u0440\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441 Home Club. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0442\u0442\u0435\u0434\u0436 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u043e\u0439 \u0434\u043e 50%! \u0422\u0430\u043a\u0436\u0435 \u043a \u0412\u0430\u0448\u0438\u043c \u0443\u0441\u043b\u0443\u0433\u0430\u043c \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u0434\u0430\u0440\u0442\u0441, \u0441\u0430\u0443\u043d\u0430 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041e\u0442\u0434\u044b\u0445\u0430\u0439\u0442\u0435 \u0441 \u0434\u0443\u0448\u043e\u0439! &quot;, &quot;conditions&quot;: &quot; &lt;p class=&quot;e-condition__text&quot;&gt;\u0423\u0441\u043b\u043e\u0432\u0438\u044f:&lt;\/p&gt; &lt;ul class=&quot;b-conditions-list&quot;&gt; &lt;li class=&quot;e-condition&quot;&gt;\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u043e-\u0440\u0430\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0430\u0440\u043a\u0435 Home Club.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u0411\u043e\u043d\u0443\u0441&lt;\/strong&gt;: \u0441\u043a\u0438\u0434\u043a\u0430 50% \u043d\u0430 \u043f\u0435\u0439\u043d\u0442\u0431\u043e\u043b - 1 500 \u0442\u0433. \u0432\u043c\u0435\u0441\u0442\u043e 3 000 \u0442\u0433.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 (\u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e).&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0417\u0430\u0432\u0442\u0440\u0430\u043a\u0438 \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u041a\u043e\u0442\u0442\u0435\u0434\u0436 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u0434\u043e 10 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;VIP-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0431\u0443\u0434\u043d\u0438\u0435 \u0434\u043d\u0438. \u0410 \u0442\u0430\u043a\u0436\u0435 VIP-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0438 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u0432 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u0447\u043d\u044b\u0435 \u0434\u043d\u0438.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0442\u043e\u0447\u043d\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0435\u0439.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c:&lt;\/strong&gt;&lt;br&gt; +7 (727) 308-23-63,&lt;br&gt; +7 (747) 841-42-51,&lt;br&gt; +7 (701) 985-90-72.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0411\u0440\u043e\u043d\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 2 \u0447\u0430\u0441\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u0431\u0440\u043e\u043d\u044c \u0430\u043d\u043d\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f).&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0415\u0441\u043b\u0438 \u0412\u044b \u0437\u0430\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u0442\u0442\u0435\u0434\u0436 \u0438 \u043d\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0443\u0441\u043b\u0443\u0433\u043e\u0439, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0443\u043f\u043e\u043d\u0430 \u043d\u0435 \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043a\u0443\u043f\u043e\u043d \u00ab\u0441\u0433\u043e\u0440\u0430\u0435\u0442\u00bb.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u0435 Home Club \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: \u0410\u043b\u043c\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u041a\u0430\u0441\u043a\u0435\u043b\u0435\u043d\u0441\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435, \u043f\u043e\u0441\u0435\u043b\u043e\u043a \u0416\u0430\u043d\u0434\u043e\u0441\u043e\u0432, Home Club.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0442\u0430\u043a \u0438 \u0432 \u043f\u043e\u0434\u0430\u0440\u043e\u043a.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0440\u0438 \u0437\u0430\u0435\u0437\u0434\u0435.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d \u0434\u043e 12 \u0430\u043f\u0440\u0435\u043b\u044f 2015 \u0433. (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e).&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;span hashstring=&quot;deal_refunds_policy&quot; hashtype=&quot;content&quot;&gt;&amp;nbsp&lt;\/span&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;span hashstring=&quot;deal_standard_conditions&quot; hashtype=&quot;content&quot;&gt;&amp;nbsp&lt;\/span&gt; &lt;\/li&gt; &lt;\/ul&gt; &lt;p class=&quot;e-offer__features&quot;&gt;\u0410\u0434\u0440\u0435\u0441&lt;\/p&gt; &lt;ul class=&quot;b-offer__features-list&quot;&gt; &lt;li class=&quot;e-offer__feature &quot;&gt; \u0410\u043b\u043c\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u041a\u0430\u0441\u043a\u0435\u043b\u0435\u043d\u0441\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435, \u043f\u043e\u0441\u0435\u043b\u043e\u043a \u0416\u0430\u043d\u0434\u043e\u0441\u043e\u0432, Home Club &lt;\/li&gt; &lt;li class=&quot;e-offer__feature &quot;&gt; \u0422\u0435\u043b\u0435\u0444\u043e\u043d\u044b:&lt;br&gt; +7 (727) 308-23-63&lt;br&gt;+7 (747) 841-42-51&lt;br&gt;+7 (701) 985-90-72&lt;br&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature &quot;&gt;\u0413\u0440\u0430\u0444\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u044b:&lt;br&gt; \u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e: \u043a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e&lt;\/li&gt; &lt;\/ul&gt;&quot;, &quot;features&quot;: &quot; &lt;p class=&quot;e-offer__features&quot;&gt;\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438:&lt;\/p&gt; &lt;ul class=&quot;b-offer__features-list&quot;&gt; &lt;li class=&quot;e-offer__feature&quot;&gt;Home Club \u0437\u0430\u0434\u0443\u043c\u0430\u043d \u0438 \u0441\u043e\u0437\u0434\u0430\u043d \u0441 \u043b\u044e\u0431\u043e\u0432\u044c\u044e \u043a \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0430\u044f \u0438 \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442 \u0435\u0435 \u0447\u0438\u0441\u0442\u043e\u0442\u0443, \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043a \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u043e\u043c\u0443 \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u043c\u0443 \u043e\u0442\u0434\u044b\u0445\u0443.&lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200b\u041d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f 10 \u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0435\u0439 (5 \u044d\u043a\u043e\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 5 Vip-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0435\u0439). \u0412 Vip-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0430\u0445 \u0435\u0441\u0442\u044c \u0440\u043e\u0441\u043a\u043e\u0448\u043d\u0430\u044f \u0441\u0430\u0443\u043d\u0430 \u043d\u0430 \u0431\u0435\u0440\u0435\u0437\u043e\u0432\u044b\u0445 \u0434\u0440\u043e\u0432\u0430\u0445, \u043a\u0443\u043f\u0435\u043b\u044c, \u043c\u0438\u043d\u0438-\u0431\u0430\u0440, \u043a\u0430\u0440\u0430\u043e\u043a\u0435, \u0431\u0438\u043b\u044c\u044f\u0440\u0434\u043d\u044b\u0439 \u0441\u0442\u043e\u043b.&lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200b\u0412 Home Club \u0442\u0430\u043a\u0436\u0435 \u0412\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0430\u0442 \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e-\u043e\u0437\u0434\u043e\u0440\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438 3-\u0445 \u0432\u0438\u0434\u043e\u0432: &lt;ul&gt; &lt;li&gt;\u043a\u043e\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438;&lt;\/li&gt; &lt;li&gt;\u0432\u0435\u043b\u043e\u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438;&lt;\/li&gt; &lt;li&gt;\u043f\u0435\u0448\u0438\u0435 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200b\u041a\u043e\u0442\u0442\u0435\u0434\u0436 \u044d\u043a\u043e\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430: &lt;ul&gt; &lt;li&gt;\u043e\u0442 4-\u0445 \u0434\u043e 7-\u043c\u0438 \u0441\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442;&lt;\/li&gt; &lt;li&gt;1 \u044d\u0442\u0430\u0436: \u043a\u0443\u0445\u043e\u043d\u043d\u044b\u0439 \u0443\u0433\u043e\u043b\u043e\u043a, \u043c\u0438\u043d\u0438-\u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a, \u0434\u0443\u0448\u0435\u0432\u0430\u044f, \u0441\u0430\u043d\u0443\u0437\u0435\u043b;&lt;\/li&gt; &lt;li&gt;2 \u044d\u0442\u0430\u0436: 2-\u0445 \u0441\u043f\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0440\u043e\u0432\u0430\u0442\u044c, \u0436\u0443\u0440\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0438\u043a, \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0441\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u043e\u0439 \u0430\u043d\u0442\u0435\u043d\u043d\u043e\u0439, \u043a\u043e\u043d\u0434\u0438\u0446\u0438\u043e\u043d\u0435\u0440, \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0431\u0430\u043b\u043a\u043e\u043d;&lt;\/li&gt; &lt;li&gt;3 \u044d\u0442\u0430\u0436: 2 \u0434\u0432\u0443\u0445\u044a\u044f\u0440\u0443\u0441\u043d\u044b\u0435 \u043a\u0440\u043e\u0432\u0430\u0442\u0438, \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0431\u0430\u043b\u043a\u043e\u043d.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200bVIP-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0438: &lt;ul&gt; &lt;li&gt;\u043e\u0442 4-\u0445 \u0434\u043e 11-\u0442\u0438 \u0441\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442;&lt;\/li&gt; &lt;li&gt;1 \u044d\u0442\u0430\u0436: \u043c\u0438\u043d\u0438\u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a, \u0441\u0442\u043e\u043b\u043e\u0432\u044b\u0439 \u0441\u0442\u043e\u043b \u043d\u0430 10 \u043f\u0435\u0440\u0441\u043e\u043d, \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u0435, \u043a\u0430\u0440\u0430\u043e\u043a\u0435, \u0441\u0430\u0443\u043d\u0430 \u043d\u0430 \u0434\u0440\u043e\u0432\u0430\u0445, \u043a\u0443\u043f\u0435\u043b\u044c, \u043c\u0430\u0441\u0441\u0430\u0436\u043d\u044b\u0439 \u0441\u0442\u043e\u043b;&lt;\/li&gt; &lt;li&gt;2 \u044d\u0442\u0430\u0436: \u0431\u0438\u043b\u044c\u044f\u0440\u0434-12 \u0444\u0443\u0442\u043e\u0432, \u043e\u0442 2-\u0445 \u0434\u043e 4-\u0445 \u043a\u043e\u043c\u043d\u0430\u0442 \u043e\u0442\u0434\u044b\u0445\u0430 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0440\u0435\u043d\u0434\u044b), 2 \u0441\u0430\u043d.\u0443\u0437\u043b\u0430.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt;\u0421\u0430\u0439\u0442 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430: &lt;a data-seohide-href=&quot;\/deal\/away\/20056\/&quot; class=&quot;e-offer__feature--link seohide-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http:\/\/www.home-club.kz\/&quot;&gt;www.home-club.kz\/&lt;\/a&gt; &lt;\/li&gt; &lt;\/ul&gt;&quot;, &quot;imagesLinks&quot;: [   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/1_20150312023051426147565.7364.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/2_20150312023051426147565.9348.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/4_20150312093171426174997.7985.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/5_20150312093171426174997.944.jpg&quot;,   &quot;https:\/\/www.chocolife.me\/&quot; ], &quot;timeToCompletion&quot;: null, &quot;mainImageLink&quot;: &quot;https:\/\/www.chocolife.me\/&quot;, &quot;originalCouponPrice&quot;: &quot;30 000&quot;, &quot;originalPrice&quot;: &quot;30 000&quot;, &quot;discountPercent&quot;: &quot;-51%&quot;, &quot;discountPrice&quot;: &quot;18 000&quot;, &quot;discountType&quot;: &quot;full&quot;, &quot;boughtCount&quot;: &quot;1&quot;, &quot;sourceServiceCategories&quot;: &quot;1 , 82 , 8 , 2&quot;, &quot;pageLink&quot;: &quot;https:\/\/www.chocolife.me\/\/20056-arenda-kottedzha-s-dvumya-spalnyami-gorki-sauna-darts-i-mnogoe-drugoe-v-prirodno-razvlekatelnom-parke-home-club-skidka-do-50&quot;, &quot;isArchive&quot;: 1, &quot;tryToUpdateCount&quot;: 0, &quot;viewCount&quot;: &quot;0&quot;, &quot;serviceName&quot;: &quot;Chocolife.me&quot;, &quot;cityName&quot;: &quot;\u0410\u043b\u043c\u0430\u0442\u044b&quot; },   { &quot;id&quot;: 2, &quot;sourceServiceId&quot;: 1, &quot;cityId&quot;: 1, &quot;createTimestamp&quot;: &quot;2015-03-12 14:01:57&quot;, &quot;lastUpdateDateTime&quot;: &quot;2016-11-01 12:39:53&quot;, &quot;recordHash&quot;: &quot;dce10232f1acb53b1ee7a8bf3902e0c0&quot;, &quot;title&quot;: &quot;\u0426\u0435\u043d\u0442\u0440 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f \u0438 \u043a\u0440\u0430\u0441\u043e\u0442\u044b AquaBike Centre&quot;, &quot;shortDescription&quot;: &quot;\u0422\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u0430\u043a\u0432\u0430\u0431\u0430\u0439\u043a\u0438\u043d\u0433\u0443 \u0438\u043b\u0438 \u043f\u0440\u0435\u0441\u0441\u043e\u0442\u0435\u0440\u0430\u043f\u0438\u044f \u0441 \u0438\u043d\u0444\u0440\u0430\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c&quot;, &quot;longDescription&quot;: null, &quot;conditions&quot;: null, &quot;features&quot;: &quot; &lt;p class=&quot;e-offer__features&quot;&gt;\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438:&lt;\/p&gt; &lt;ul class=&quot;b-offer__features-list&quot;&gt; &lt;li class=&quot;e-offer__feature&quot;&gt;\u0410\u043a\u0432\u0430\u0431\u0430\u0439\u043a\u0438\u043d\u0433 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439 \u0441 \u043b\u044e\u0431\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0439.&lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; Aquabike \u2013 \u044d\u0442\u043e:                                                 &lt;ul&gt; &lt;li&gt;\u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044b\u0439 \u0436\u0438\u0432\u043e\u0442;&lt;\/li&gt; &lt;li&gt;\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u044f\u0433\u043e\u0434\u0438\u0446\u044b;&lt;\/li&gt; &lt;li&gt;\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u0440\u043a\u0438;&lt;\/li&gt; &lt;li&gt;\u043b\u0435\u0433\u043a\u043e\u0441\u0442\u044c \u0432  \u043d\u043e\u0433\u0430\u0445;&lt;\/li&gt; &lt;li&gt;\u0442\u0435\u043b\u043e \u0432 \u0442\u043e\u043d\u0443\u0441\u0435;&lt;\/li&gt; &lt;li&gt;\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043e\u0434\u044b \u0432 \u0442\u0435\u043b\u0435;&lt;\/li&gt; &lt;li&gt;\u0443\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435 \u043c\u0443\u0441\u043a\u0443\u043b\u0430\u0442\u0443\u0440\u044b;&lt;\/li&gt; &lt;li&gt;\u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; &lt;strong&gt;\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0441\u0441\u043e\u0442\u0435\u0440\u0430\u043f\u0438\u0438:&lt;\/strong&gt; &lt;ul&gt; &lt;li&gt;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0443\u043f\u0440\u0443\u0433\u043e\u0441\u0442\u044c \u0438 \u044d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0436\u0438;&lt;\/li&gt; &lt;li&gt;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u0442\u0443\u044e \u043a\u043e\u0436\u0443 \u043f\u043e\u0441\u043b\u0435 \u0431\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u0430;&lt;\/li&gt; &lt;li&gt;\u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0435, \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u043e\u043d;&lt;\/li&gt; &lt;li&gt;\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u0440\u043e\u0432\u043e\u0442\u043e\u043a;&lt;\/li&gt; &lt;li&gt;\u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0432\u0435\u0449\u0435\u0441\u0442\u0432, \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0448\u043b\u0430\u043a\u0438 \u0438 \u0442\u043e\u043a\u0441\u0438\u043d\u044b;&lt;\/li&gt; &lt;li&gt;\u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0438\u0449\u0435\u0432\u0430\u0440\u0435\u043d\u0438\u044f, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044e \u0430\u043f\u043f\u0435\u0442\u0438\u0442\u0430;&lt;\/li&gt; &lt;li&gt;\u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0439 \u043d\u0435\u0440\u0432\u043e\u0437\u043d\u043e\u0441\u0442\u0438;&lt;\/li&gt; &lt;li&gt;\u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u0438 \u043f\u0440\u0438 \u0440\u0430\u0434\u0438\u043a\u0443\u043b\u0438\u0442\u0435, \u0430\u0440\u0442\u0440\u043e\u0437\u0435, \u043f\u0435\u0440\u0435\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435 \u043c\u044b\u0448\u0446.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; &lt;strong&gt;\u041e\u0434\u0438\u043d \u0441\u0435\u0430\u043d\u0441 \u043f\u0440\u0435\u0441\u0441\u043e\u0442\u0435\u0440\u0430\u043f\u0438\u0438 \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a 1 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435 \u0432 \u0441\u043f\u043e\u0440\u0442\u0437\u0430\u043b\u0435.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u0412 AquaBike Centre \u0434\u043b\u044f \u0412\u0430\u0441: &lt;ul&gt; &lt;li&gt;\u0437\u0430\u043b \u0434\u043b\u044f \u0437\u0430\u043d\u044f\u0442\u0438\u0439, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 2 \u0447\u0435\u043b\u043e\u0432\u0435\u043a;&lt;\/li&gt; &lt;li&gt;\u0435\u0441\u0442\u044c \u0434\u0443\u0448 \u0438 \u0440\u0430\u0437\u0434\u0435\u0432\u0430\u043b\u043a\u0438;&lt;\/li&gt; &lt;li&gt;\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e 45 \u043c\u0438\u043d\u0443\u0442.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;\/ul&gt;&quot;, &quot;imagesLinks&quot;: [   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20016\/660x305\/1_20150314013241426318344.7033.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20016\/660x305\/2_20150314013241426318344.8157.JPG&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20016\/660x305\/4_20150311053411426073981.6524.JPG&quot;,   &quot;https:\/\/www.chocolife.me\/&quot; ], &quot;timeToCompletion&quot;: null, &quot;mainImageLink&quot;: &quot;https:\/\/www.chocolife.me\/&quot;, &quot;originalCouponPrice&quot;: &quot;3 000&quot;, &quot;originalPrice&quot;: &quot;3 000&quot;, &quot;discountPercent&quot;: &quot;-50%&quot;, &quot;discountPrice&quot;: &quot;1 500&quot;, &quot;discountType&quot;: &quot;full&quot;, &quot;boughtCount&quot;: &quot;58&quot;, &quot;sourceServiceCategories&quot;: &quot;1 , 68 , 36 , 2&quot;, &quot;pageLink&quot;: &quot;https:\/\/www.chocolife.me\/\/20016-novinka-iz-francii-vse-dlya-vashey-krasoty-zdorovya-i-relaksacii-trenirovki-po-akvabaykingu-a-takzhe-pressoterapiya-so-skidkoy-50-v-aquabike-centre&quot;, &quot;isArchive&quot;: 1, &quot;tryToUpdateCount&quot;: 0, &quot;viewCount&quot;: &quot;0&quot;, &quot;serviceName&quot;: &quot;Chocolife.me&quot;, &quot;cityName&quot;: &quot;\u0410\u043b\u043c\u0430\u0442\u044b&quot; }, ...] <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/v1\/coupon\/{id}<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>{ &quot;id&quot;: 1, &quot;sourceServiceId&quot;: 1, &quot;cityId&quot;: 1, &quot;createTimestamp&quot;: &quot;2015-03-12 14:01:57&quot;, &quot;lastUpdateDateTime&quot;: &quot;2016-10-20 03:54:47&quot;, &quot;recordHash&quot;: &quot;e7b01c1a69bc66e1f1a62d8fcb0825de&quot;, &quot;title&quot;: &quot;Home Club&quot;, &quot;shortDescription&quot;: &quot;\u0410\u0440\u0435\u043d\u0434\u0430 \u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0430 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u0430\u043b\u044c\u043d\u044f\u043c\u0438, \u0433\u043e\u0440\u043a\u0438, \u0441\u0430\u0443\u043d\u0430, \u0434\u0430\u0440\u0442\u0441 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435&quot;, &quot;longDescription&quot;: &quot; \u041f\u0440\u0435\u0434\u043f\u0440\u0430\u0437\u0434\u043d\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u043a\u0438 \u2013 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0435\u0437\u0434\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0433\u043e\u0440\u043e\u0434\u0430. \u041e\u0442\u0434\u043e\u0445\u043d\u0438\u0442\u0435 \u043e\u0442 \u043c\u0430\u0448\u0438\u043d, \u043f\u0440\u043e\u0431\u043e\u043a \u0438 \u0441\u043c\u043e\u0433\u0430 \u2013 \u043f\u0440\u0438\u0435\u0437\u0436\u0430\u0439\u0442\u0435 \u0432 \u0441\u0435\u043c\u0435\u0439\u043d\u043e-\u043e\u0437\u0434\u043e\u0440\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441 Home Club. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0442\u0442\u0435\u0434\u0436 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u043e\u0439 \u0434\u043e 50%! \u0422\u0430\u043a\u0436\u0435 \u043a \u0412\u0430\u0448\u0438\u043c \u0443\u0441\u043b\u0443\u0433\u0430\u043c \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u0434\u0430\u0440\u0442\u0441, \u0441\u0430\u0443\u043d\u0430 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041e\u0442\u0434\u044b\u0445\u0430\u0439\u0442\u0435 \u0441 \u0434\u0443\u0448\u043e\u0439! &quot;, &quot;conditions&quot;: &quot; &lt;p class=&quot;e-condition__text&quot;&gt;\u0423\u0441\u043b\u043e\u0432\u0438\u044f:&lt;\/p&gt; &lt;ul class=&quot;b-conditions-list&quot;&gt; &lt;li class=&quot;e-condition&quot;&gt;\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u043d\u043e-\u0440\u0430\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0430\u0440\u043a\u0435 Home Club.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u0411\u043e\u043d\u0443\u0441&lt;\/strong&gt;: \u0441\u043a\u0438\u0434\u043a\u0430 50% \u043d\u0430 \u043f\u0435\u0439\u043d\u0442\u0431\u043e\u043b - 1 500 \u0442\u0433. \u0432\u043c\u0435\u0441\u0442\u043e 3 000 \u0442\u0433.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 (\u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e).&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0417\u0430\u0432\u0442\u0440\u0430\u043a\u0438 \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u041a\u043e\u0442\u0442\u0435\u0434\u0436 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u0434\u043e 10 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;VIP-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0431\u0443\u0434\u043d\u0438\u0435 \u0434\u043d\u0438. \u0410 \u0442\u0430\u043a\u0436\u0435 VIP-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0438 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u0432 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u0447\u043d\u044b\u0435 \u0434\u043d\u0438.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0442\u043e\u0447\u043d\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0435\u0439.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c:&lt;\/strong&gt;&lt;br&gt; +7 (727) 308-23-63,&lt;br&gt; +7 (747) 841-42-51,&lt;br&gt; +7 (701) 985-90-72.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0440\u043e\u043d\u044c \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0411\u0440\u043e\u043d\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 2 \u0447\u0430\u0441\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f (\u0431\u0440\u043e\u043d\u044c \u0430\u043d\u043d\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f).&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0415\u0441\u043b\u0438 \u0412\u044b \u0437\u0430\u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u0442\u0442\u0435\u0434\u0436 \u0438 \u043d\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0443\u0441\u043b\u0443\u0433\u043e\u0439, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0443\u043f\u043e\u043d\u0430 \u043d\u0435 \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043a\u0443\u043f\u043e\u043d \u00ab\u0441\u0433\u043e\u0440\u0430\u0435\u0442\u00bb.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u0435 Home Club \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: \u0410\u043b\u043c\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u041a\u0430\u0441\u043a\u0435\u043b\u0435\u043d\u0441\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435, \u043f\u043e\u0441\u0435\u043b\u043e\u043a \u0416\u0430\u043d\u0434\u043e\u0441\u043e\u0432, Home Club.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0435\u0431\u044f, \u0442\u0430\u043a \u0438 \u0432 \u043f\u043e\u0434\u0430\u0440\u043e\u043a.&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;strong&gt;\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0440\u0438 \u0437\u0430\u0435\u0437\u0434\u0435.&lt;\/strong&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d \u0434\u043e 12 \u0430\u043f\u0440\u0435\u043b\u044f 2015 \u0433. (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e).&lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;span hashstring=&quot;deal_refunds_policy&quot; hashtype=&quot;content&quot;&gt;&amp;nbsp&lt;\/span&gt; &lt;\/li&gt; &lt;li class=&quot;e-condition&quot;&gt; &lt;span hashstring=&quot;deal_standard_conditions&quot; hashtype=&quot;content&quot;&gt;&amp;nbsp&lt;\/span&gt; &lt;\/li&gt; &lt;\/ul&gt; &lt;p class=&quot;e-offer__features&quot;&gt;\u0410\u0434\u0440\u0435\u0441&lt;\/p&gt; &lt;ul class=&quot;b-offer__features-list&quot;&gt; &lt;li class=&quot;e-offer__feature &quot;&gt; \u0410\u043b\u043c\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u041a\u0430\u0441\u043a\u0435\u043b\u0435\u043d\u0441\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435, \u043f\u043e\u0441\u0435\u043b\u043e\u043a \u0416\u0430\u043d\u0434\u043e\u0441\u043e\u0432, Home Club &lt;\/li&gt; &lt;li class=&quot;e-offer__feature &quot;&gt; \u0422\u0435\u043b\u0435\u0444\u043e\u043d\u044b:&lt;br&gt; +7 (727) 308-23-63&lt;br&gt;+7 (747) 841-42-51&lt;br&gt;+7 (701) 985-90-72&lt;br&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature &quot;&gt;\u0413\u0440\u0430\u0444\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u044b:&lt;br&gt; \u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e: \u043a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e&lt;\/li&gt; &lt;\/ul&gt;&quot;, &quot;features&quot;: &quot; &lt;p class=&quot;e-offer__features&quot;&gt;\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438:&lt;\/p&gt; &lt;ul class=&quot;b-offer__features-list&quot;&gt; &lt;li class=&quot;e-offer__feature&quot;&gt;Home Club \u0437\u0430\u0434\u0443\u043c\u0430\u043d \u0438 \u0441\u043e\u0437\u0434\u0430\u043d \u0441 \u043b\u044e\u0431\u043e\u0432\u044c\u044e \u043a \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0430\u044f \u0438 \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442 \u0435\u0435 \u0447\u0438\u0441\u0442\u043e\u0442\u0443, \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043a \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u043e\u043c\u0443 \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u043c\u0443 \u043e\u0442\u0434\u044b\u0445\u0443.&lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200b\u041d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f 10 \u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0435\u0439 (5 \u044d\u043a\u043e\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 5 Vip-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0435\u0439). \u0412 Vip-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0430\u0445 \u0435\u0441\u0442\u044c \u0440\u043e\u0441\u043a\u043e\u0448\u043d\u0430\u044f \u0441\u0430\u0443\u043d\u0430 \u043d\u0430 \u0431\u0435\u0440\u0435\u0437\u043e\u0432\u044b\u0445 \u0434\u0440\u043e\u0432\u0430\u0445, \u043a\u0443\u043f\u0435\u043b\u044c, \u043c\u0438\u043d\u0438-\u0431\u0430\u0440, \u043a\u0430\u0440\u0430\u043e\u043a\u0435, \u0431\u0438\u043b\u044c\u044f\u0440\u0434\u043d\u044b\u0439 \u0441\u0442\u043e\u043b.&lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200b\u0412 Home Club \u0442\u0430\u043a\u0436\u0435 \u0412\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0430\u0442 \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e-\u043e\u0437\u0434\u043e\u0440\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438 3-\u0445 \u0432\u0438\u0434\u043e\u0432: &lt;ul&gt; &lt;li&gt;\u043a\u043e\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438;&lt;\/li&gt; &lt;li&gt;\u0432\u0435\u043b\u043e\u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438;&lt;\/li&gt; &lt;li&gt;\u043f\u0435\u0448\u0438\u0435 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200b\u041a\u043e\u0442\u0442\u0435\u0434\u0436 \u044d\u043a\u043e\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430: &lt;ul&gt; &lt;li&gt;\u043e\u0442 4-\u0445 \u0434\u043e 7-\u043c\u0438 \u0441\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442;&lt;\/li&gt; &lt;li&gt;1 \u044d\u0442\u0430\u0436: \u043a\u0443\u0445\u043e\u043d\u043d\u044b\u0439 \u0443\u0433\u043e\u043b\u043e\u043a, \u043c\u0438\u043d\u0438-\u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a, \u0434\u0443\u0448\u0435\u0432\u0430\u044f, \u0441\u0430\u043d\u0443\u0437\u0435\u043b;&lt;\/li&gt; &lt;li&gt;2 \u044d\u0442\u0430\u0436: 2-\u0445 \u0441\u043f\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0440\u043e\u0432\u0430\u0442\u044c, \u0436\u0443\u0440\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0438\u043a, \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440 \u0441\u043e \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u043e\u0439 \u0430\u043d\u0442\u0435\u043d\u043d\u043e\u0439, \u043a\u043e\u043d\u0434\u0438\u0446\u0438\u043e\u043d\u0435\u0440, \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0431\u0430\u043b\u043a\u043e\u043d;&lt;\/li&gt; &lt;li&gt;3 \u044d\u0442\u0430\u0436: 2 \u0434\u0432\u0443\u0445\u044a\u044f\u0440\u0443\u0441\u043d\u044b\u0435 \u043a\u0440\u043e\u0432\u0430\u0442\u0438, \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0431\u0430\u043b\u043a\u043e\u043d.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt; \u200bVIP-\u043a\u043e\u0442\u0442\u0435\u0434\u0436\u0438: &lt;ul&gt; &lt;li&gt;\u043e\u0442 4-\u0445 \u0434\u043e 11-\u0442\u0438 \u0441\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442;&lt;\/li&gt; &lt;li&gt;1 \u044d\u0442\u0430\u0436: \u043c\u0438\u043d\u0438\u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a, \u0441\u0442\u043e\u043b\u043e\u0432\u044b\u0439 \u0441\u0442\u043e\u043b \u043d\u0430 10 \u043f\u0435\u0440\u0441\u043e\u043d, \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u0435, \u043a\u0430\u0440\u0430\u043e\u043a\u0435, \u0441\u0430\u0443\u043d\u0430 \u043d\u0430 \u0434\u0440\u043e\u0432\u0430\u0445, \u043a\u0443\u043f\u0435\u043b\u044c, \u043c\u0430\u0441\u0441\u0430\u0436\u043d\u044b\u0439 \u0441\u0442\u043e\u043b;&lt;\/li&gt; &lt;li&gt;2 \u044d\u0442\u0430\u0436: \u0431\u0438\u043b\u044c\u044f\u0440\u0434-12 \u0444\u0443\u0442\u043e\u0432, \u043e\u0442 2-\u0445 \u0434\u043e 4-\u0445 \u043a\u043e\u043c\u043d\u0430\u0442 \u043e\u0442\u0434\u044b\u0445\u0430 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0440\u0435\u043d\u0434\u044b), 2 \u0441\u0430\u043d.\u0443\u0437\u043b\u0430.&lt;\/li&gt; &lt;\/ul&gt; &lt;\/li&gt; &lt;li class=&quot;e-offer__feature&quot;&gt;\u0421\u0430\u0439\u0442 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430: &lt;a data-seohide-href=&quot;\/deal\/away\/20056\/&quot; class=&quot;e-offer__feature--link seohide-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http:\/\/www.home-club.kz\/&quot;&gt;www.home-club.kz\/&lt;\/a&gt; &lt;\/li&gt; &lt;\/ul&gt;&quot;, &quot;imagesLinks&quot;: [   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/1_20150312023051426147565.7364.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/2_20150312023051426147565.9348.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/4_20150312093171426174997.7985.jpg&quot;,   &quot;https:\/\/static.chocolife.me\/static\/upload\/images\/deal\/for_deal_page\/21000\/20056\/660x305\/5_20150312093171426174997.944.jpg&quot;,   &quot;https:\/\/www.chocolife.me\/&quot; ], &quot;timeToCompletion&quot;: null, &quot;mainImageLink&quot;: &quot;https:\/\/www.chocolife.me\/&quot;, &quot;originalCouponPrice&quot;: &quot;30 000&quot;, &quot;originalPrice&quot;: &quot;30 000&quot;, &quot;discountPercent&quot;: &quot;-51%&quot;, &quot;discountPrice&quot;: &quot;18 000&quot;, &quot;discountType&quot;: &quot;full&quot;, &quot;boughtCount&quot;: &quot;1&quot;, &quot;sourceServiceCategories&quot;: &quot;1 , 82 , 8 , 2&quot;, &quot;pageLink&quot;: &quot;https:\/\/www.chocolife.me\/\/20056-arenda-kottedzha-s-dvumya-spalnyami-gorki-sauna-darts-i-mnogoe-drugoe-v-prirodno-razvlekatelnom-parke-home-club-skidka-do-50&quot;, &quot;isArchive&quot;: 1, &quot;tryToUpdateCount&quot;: 0, &quot;viewCount&quot;: &quot;0&quot;, &quot;serviceName&quot;: &quot;Chocolife.me&quot;, &quot;cityName&quot;: &quot;\u0410\u043b\u043c\u0430\u0442\u044b&quot; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0443 \u0432\u043e\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a\u2026 \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0434\u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>  \u0427\u0442\u043e \u0436\u0435 \u043d\u0430\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0434\u043e\u0431\u0440\u043e\u043c? \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e! \u0417\u0434\u0435\u0441\u044c \u0438 \u0434\u0430\u043b\u0435\u0435 \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0445\u043e\u0439 \u043a\u043e\u0434 \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438, \u043d\u043e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c API \u043a\u043b\u0430\u0441\u0441 SkidKZApi \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">skidkzapi.h<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#ifndef SKIDKZAPI_H #define SKIDKZAPI_H  #include &quot;apibase.h&quot; #include &lt;QtQml&gt;  class SkidKZApi : public APIBase {     Q_OBJECT public:     Q_INVOKABLE explicit SkidKZApi();      \/\/\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u0442\u0430\u0442. \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0430\u043f\u0438 \u0432 QML     static void declareQML() {         qmlRegisterType&lt;SkidKZApi&gt;(&quot;com.github.qtrestexample.skidkzapi&quot;, 1, 0, &quot;SkidKZApi&quot;);     }      \/\/\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 ReadOnly \u043c\u043e\u0434\u0435\u043b\u0438     QNetworkReply *handleRequest(QString path, QStringList sort, Pagination *pagination,                            QVariantMap filters = QVariantMap(), QStringList fields = QStringList(), QString id = 0);      \/\/\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \/v1\/coupon     QNetworkReply *getCoupons(QStringList sort, Pagination *pagination,                               QVariantMap filters = QVariantMap(), QStringList fields = QStringList());          \/\/\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \/v1\/coupon\/{id}     QNetworkReply *getCouponDetail(QString id);      \/\/\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \/v1\/categories     QNetworkReply *getCategories(QStringList sort, Pagination *pagination); };  #endif \/\/ SKIDKZAPI_H <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">skidkzapi.cpp<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &quot;skidkzapi.h&quot; #include &lt;QFile&gt; #include &lt;QTextStream&gt; #include &lt;QUrlQuery&gt;  SkidKZApi::SkidKZApi() : APIBase(0) {  }  QNetworkReply *SkidKZApi::handleRequest(QString path, QStringList sort, Pagination *pagination,                                   QVariantMap filters, QStringList fields, QString id) {     \/\/\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434     if (path == &quot;\/v1\/coupon&quot;) {         return getCoupons(sort, pagination, filters, fields);     }     else if (path == &quot;\/v1\/coupon\/{id}&quot;) {         return getCouponDetail(id);     }     else if (path == &quot;\/v1\/categories&quot;) {         return getCategories(sort, pagination);     } }  \/\/\u041f\u043e\u0443\u043b\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b, \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 QNetworkReply *SkidKZApi::getCoupons(QStringList sort, Pagination *pagination, QVariantMap filters, QStringList fields) {     \/\/\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441     QUrl url = QUrl(baseUrl()+&quot;\/v1\/coupon&quot;);     QUrlQuery query;      \/\/\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430     if (!sort.isEmpty()) {         query.addQueryItem(&quot;sort&quot;, sort.join(&quot;,&quot;));     }      \/\/\u0417\u0430\u0434\u0430\u0435\u043c \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0438     switch(pagination-&gt;policy()) {     case Pagination::PageNumber:         query.addQueryItem(&quot;per-page&quot;, QString::number(pagination-&gt;perPage()));         query.addQueryItem(&quot;page&quot;, QString::number(pagination-&gt;currentPage()));         break;     case Pagination::None:     case Pagination::Infinity:     case Pagination::LimitOffset:     case Pagination::Cursor:     default:         break;     }      \/\/\u0437\u0430\u0434\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u0441\u044f - \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439     if (!filters.isEmpty()) {         QMapIterator&lt;QString, QVariant&gt; i(filters);         while (i.hasNext()) {             i.next();             query.addQueryItem(i.key(), i.value().toString());         }     }      \/\/\u041f\u0440\u043e\u0441\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0441\u043b\u0430\u0442\u044c \u043d\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f     if (!fields.isEmpty()) {         query.addQueryItem(&quot;fields&quot;, fields.join(&quot;,&quot;));     }      \/\/\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441     url.setQuery(query.query());      \/\/\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u043c GET     QNetworkReply *reply = get(url);      return reply; }  \/\/\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 QNetworkReply *SkidKZApi::getCouponDetail(QString id) {     if (id.isEmpty()) {         qDebug() &lt;&lt; &quot;ID is empty!&quot;;         return 0;     }      \/\/\u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0435\u0433\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u043c GET     QUrl url = QUrl(baseUrl()+&quot;\/v1\/coupon\/&quot;+id);      QNetworkReply *reply = get(url);      return reply; }  \/\/\u042d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 QNetworkReply *SkidKZApi::getCategories(QStringList sort, Pagination *pagination) {     \/\/\u0417\u0430\u043f\u0440\u043e\u0441     QUrl url = QUrl(baseUrl()+&quot;\/v1\/categories&quot;);     QUrlQuery query;      \/\/\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430     if (!sort.isEmpty()) {         query.addQueryItem(&quot;sort&quot;, sort.join(&quot;,&quot;));     }      \/\/\u041f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f     switch(pagination-&gt;policy()) {     case Pagination::PageNumber:         query.addQueryItem(&quot;per-page&quot;, QString::number(pagination-&gt;perPage()));         query.addQueryItem(&quot;page&quot;, QString::number(pagination-&gt;currentPage()));         break;     case Pagination::None:     case Pagination::Infinity:     case Pagination::LimitOffset:     case Pagination::Cursor:     default:         break;     }      url.setQuery(query.query());      QNetworkReply *reply = get(url);      return reply; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  API \u043a\u043b\u0430\u0441\u0441 \u0433\u043e\u0442\u043e\u0432, \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043d\u0443\u0436\u043d\u0443\u044e \u043d\u0430\u043c \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0414\u0430\u043b\u0435\u0435, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438. \u0414\u043b\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0434\u0435\u043b\u044c JsonRestListModel, \u0430 \u0434\u043b\u044f \u043a\u0443\u043f\u043e\u043d\u043e\u0432 \u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u0442 AbstractJsonListModel.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">couponmodel.h<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#ifndef COUPONMODEL_H #define COUPONMODEL_H  #include &quot;abstractjsonrestlistmodel.h&quot; #include &quot;api\/skidkzapi.h&quot;  class CouponModel : public AbstractJsonRestListModel {     Q_OBJECT  public:     explicit CouponModel(QObject *parent = 0);      \/\/\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 QML (\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u0434\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0432 main.cpp \u0434\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 QML)     static void declareQML() {         AbstractJsonRestListModel::declareQML();         qmlRegisterType&lt;CouponModel&gt;(&quot;com.github.qtrestexample.coupons&quot;, 1, 0, &quot;CouponModel&quot;);     }  protected:     \/\/\u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 API     QNetworkReply *fetchMoreImpl(const QModelIndex &parent);     QNetworkReply *fetchDetailImpl(QString id);      \/\/\u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438     QVariantMap preProcessItem(QVariantMap item); };  #endif \/\/ COUPONMODEL_H <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">couponmodel.cpp<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &quot;couponmodel.h&quot;  CouponModel::CouponModel(QObject *parent) : AbstractJsonRestListModel(parent) {  }  QNetworkReply *CouponModel::fetchMoreImpl(const QModelIndex &parent) {     Q_UNUSED(parent)     \/\/\u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 API \u043c\u0435\u0442\u043e\u0434     return static_cast&lt;SkidKZApi *&gt;(apiInstance())-&gt;getCoupons(sort(), pagination(), filters(), fields()); }  QNetworkReply *CouponModel::fetchDetailImpl(QString id) {     \/\/\u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 API \u043c\u0435\u0442\u043e\u0434     return static_cast&lt;SkidKZApi *&gt;(apiInstance())-&gt;getCouponDetail(id); }  QVariantMap CouponModel::preProcessItem(QVariantMap item) {     \/\/\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f createTimestamp     QDate date = QDateTime::fromString(item.value(&quot;createTimestamp&quot;).toString(), &quot;yyyy-MM-dd hh:mm:ss&quot;).date();     item.insert(&quot;createDate&quot;, date.toString(&quot;dd.MM.yyyy&quot;));      \/\/\u0410 \u0442\u0430\u043a\u0436\u0435 - \u043f\u043e\u043b\u0435 originalCouponPrice     QString originalCouponPrice = item.value(&quot;originalCouponPrice&quot;).toString().trimmed();     if (originalCouponPrice.isEmpty()) { originalCouponPrice = &quot;?&quot;; }     QString discountPercent = item.value(&quot;discountPercent&quot;).toString().trimmed().remove(&quot;\u2014&quot;).remove(&quot;-&quot;).remove(&quot;%&quot;);     if (discountPercent.isEmpty()) { discountPercent = &quot;?&quot;; }     QString originalPrice = item.value(&quot;originalPrice&quot;).toString().trimmed();     if (originalPrice.isEmpty()) { originalPrice = &quot;?&quot;; }     QString discountPrice = item.value(&quot;discountPrice&quot;).toString().remove(&quot;\u0442\u0433.&quot;).trimmed();     if (discountPrice.isEmpty()) { discountPrice = &quot;?&quot;; }      \/\/\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 discountString, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442 \u0432 API     QString discountType = item.value(&quot;discountType&quot;).toString();     QString discountString = tr(&quot;Undefined Type&quot;);     if (discountType == &quot;freeCoupon&quot; || discountType == &quot;coupon&quot;) {         discountString = tr(&quot;Coupon: %1. Discount: %2%&quot;).arg(originalCouponPrice).arg(discountPercent);     } else if (discountType == &quot;full&quot;) {         discountString = tr(&quot;Cost: %1. Certificate: %2. Discount: %3%&quot;).arg(originalPrice).arg(discountPrice).arg(discountPercent);     }      item.insert(&quot;discountString&quot;, discountString);      return item; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e! \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0440\u044f \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u044d\u0442\u043e \u0441 GUI \u0447\u0430\u0441\u0442\u044c\u044e.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b declareQML \u0432 main.cpp, \u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445.<\/p>\n<p>  \u041d\u0443 \u0430 \u0434\u0430\u043b\u0435\u0435 \u2014 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c QML \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0430\u0448\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">somewhere.qml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">... import com.github.qtrestexample.skidkzapi 1.0 import com.github.qtrest.jsonrestlistmodel 1.0 import com.github.qtrest.pagination 1.0 import com.github.qtrest.requests 1.0 ...     \/\/API \u043e\u0431\u044a\u0435\u043a\u0442, \u043e\u0434\u0438\u043d \u043d\u0430 \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0442\u043e\u043a\u0435\u043d \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 - \u0440\u0430\u0431\u043e\u0447\u0438\u0439 =)     SkidKZApi {         id: skidKZApi          baseUrl: &quot;http:\/\/api.skid.kz&quot;          authTokenHeader: &quot;Authorization&quot;         authToken: &quot;Bearer 8aef452ee3b32466209535b96d456b06&quot;          Component.onCompleted: console.log(&quot;completed!&quot;);     }      \/\/\u041c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439, \u043f\u0440\u0438\u043c\u0435\u0440 ReadOnly \u043c\u043e\u0434\u0435\u043b\u0438     \/\/\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u0434\u0430 - \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0435\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0430\u043c\u0430 \u0432\u0441\u0435 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u043b\u0430     JsonRestListModel {         id: categoriesRestModel         api: skidKZApi          idField: 'id'          requests {             get: &quot;\/v1\/categories&quot;         }          sort: ['categoryName']          pagination {             policy: Pagination.PageNumber             perPage: 20             currentPageHeader: &quot;X-Pagination-Current-Page&quot;             totalCountHeader: &quot;X-Pagination-Total-Count&quot;             pageCountHeader: &quot;X-Pagination-Page-Count&quot;         }          Component.onCompleted: { console.log(pagination.perPage); reload(); }     }      \/\/\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 CouponModel \u043c\u043e\u0434\u0435\u043b\u044c, \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0435 \u0437\u0430\u0434\u0430\u0435\u043c requests, \u0442.\u043a. \u0432\u044b\u0437\u043e\u0432\u044b \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 fetchMoreImpl.     CouponModel {         id: coupons;         api: skidKZApi          filters: {'isArchive': '0'}         idField: 'id'         fields: ['id','title','sourceServiceId','imagesLinks',                     'mainImageLink','pageLink','cityId','boughtCount',                    'shortDescription','createTimestamp', 'serviceName',                     'discountType', 'originalCouponPrice', 'originalPrice',                     'discountPercent', 'discountPrice']         sort: ['-id']          pagination {             policy: Pagination.PageNumber             perPage: 20             currentPageHeader: &quot;X-Pagination-Current-Page&quot;             totalCountHeader: &quot;X-Pagination-Total-Count&quot;             pageCountHeader: &quot;X-Pagination-Page-Count&quot;         }          Component.onCompleted: { console.log(pagination.perPage); reload(); }     } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0443 \u0432\u043e\u0442 \u0438 \u0432\u0441\u0435, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 ListView \u044f \u0443\u0436 \u043d\u0435 \u0431\u0443\u0434\u0443, \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u2014 \u0432\u0441\u0435 \u0435\u0441\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<h4>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u043f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>  \u041d\u0443 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443.<br \/>  \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 GitHub \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c:  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/kafeg\/qtrest\">https:\/\/github.com\/kafeg\/qtrest<\/a> \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430.<\/li>\n<li><a href=\"https:\/\/github.com\/kafeg\/qtrest-example\">https:\/\/github.com\/kafeg\/qtrest-example<\/a> \u2014 \u0434\u0435\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u0441\u0435 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 API \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u0434.<\/p>\n<p>  PS: \u0416\u0430\u043b\u044c, \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u0433\u043e\u0434\u0430 \u0442\u0440\u0438 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439 \u043f\u043e\u0434 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430 \u0442\u0435\u043c\u0430 \u2014 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u044b, \u0432\u0434\u0440\u0443\u0433 \u044f \u0447\u0442\u043e-\u0442\u043e \u0443\u043f\u0443\u0441\u0442\u0438\u043b \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438? =)<br \/> \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\/314984\/\"> https:\/\/habrahabr.ru\/post\/314984\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423\u0432\u0438\u0434\u0435\u043b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432 \u043b\u0435\u043d\u0442\u0435 <a href=\"https:\/\/habrahabr.ru\/post\/314932\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0432\u0435\u0434\u044c \u043f\u0440\u043e \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u0445\u0430\u0431\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u0435\u0445\u043b\u0438\u0434\u043e\u043c \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c\u0438 iOS\/Android, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435 API \u043d\u0430 Django\/Yii2\/\u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u0449\u0438\u043d\u0435. \u0418 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0443 \u043d\u0438\u0445 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 REST API, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0432 Qt, \u0442.\u043a. \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 REST \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Qt \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e.<\/p>\n<p>  \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u041d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0445\u0435\u043c\u0430, \u0430 \u043f\u043e\u0434 \u043d\u0435\u0439, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0434\u0435\u0438, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/538\/52c\/523\/53852c523c21a18d27b48f726d2edcd1.jpg\" alt=\"image\"\/>  <\/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-280812","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280812","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=280812"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280812\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}