.. _gs3_rest_dev: Разработка и отладка ========================== Набор служебных сервисов для разработки приложений через 'Конфигуратор'. Получение списка сессий ---------------------------- При отправке HTTP GET на адрес сервиса, будет возвращён JSON со списком сессий, удовлетворяющих условиям поиска. Адрес сервиса - ``http://{server:port}/app/sys/rest/sessions`` Http-запрос может содержать следующие параметры: - ``sbt`` - Фильтр по имени SBT - ``clientId`` - Фильтр по идентификатору клиента (этот идентификатор присваивается каждому экземпляру браузера и содержится в куках) - ``user`` - Фильтр по имени пользователя - ``app`` - Фильтр по имени главной выборки приложения (поиск осуществляется по вхождению переданного значения в полное имя гл.выборки) Пример HTTP GET: .. code-block:: text http://localhost:8080/app/sys/rest/sessions?sbt=test&user=admin&clientId=123456&app=Xxx_xxxxxx Пример ответа: .. code-block:: json {"sessions":[{ "sid": "E1", "id": "02b5f602-ac2c-4259-9452-18840a1cd124", "user": "admin", "clientId": "B54E2C1F-04E5-4BB2-9372-A9AB8E9C6676", "database": "PGTEST", "app": "gtk-ru.bitec.app.gs3.Gs3_TestXmlApplication" }]} Выполнение Jexl в контексте главной выборки приложения ----------------------------------------------------------- Простой HTTP POST ```````````````````````` При отправке HTTP POST на адрес сервиса будет выполнен Jexl-скрипт, переданный в теле запроса, в контексте гл.выборки приложения сессии с переданным идентификатором будет выполнен Jexl-скрипт, переданный в теле запроса. Адрес сервиса - ``http://{server:port}/app/sys/rest/sessions/{id}/jexl/mainsel`` - ``http://{server:port}/app/sys/rest/sessions/new/jexl/mainsel?appname={application}`` где: - ``{id}`` - уникальный идентификатор рабочего сеанса, строковое представление GUID. Http-запрос может содержать следующие параметры: - ``app`` - Имя приложения, которое должно быть открыто после создания новой сессии. Пример HTTP POST: .. code-block:: text - http://localhost:8080/app/sys/rest/sessions/949d77e9-80bf-4b93-bd3b-b424f8887783/jexl/mainsel - http://localhost:8080/app/sys/rest/sessions/new/jexl/mainsel?appname=Gs3_TestXmlApplication Пример ответа .. code-block:: json { "sessionId":"14849330-3196-4b33-80c5-caa370186720", "result":"[результат выполнения Jexl]" } Form HTTP POST ``````````````````` Альтернативным вариантом передачи Jexl скрипта, является отправка на адрес сервиса http формы, поле которой содержит Jexl-скрипт. Адреса сервиса - ``http://{server:port}/app/sys/rest/form/sessions/{id}/jexl/mainsel`` - ``http://{server:port}/app/sys/rest/form/sessions/new/jexl/mainsel?appname={application}`` где: - ``{id}`` - уникальный идентификатор рабочего сеанса, строковое представление GUID. - ``new`` - новый рабочий сеанс. Http-запрос может содержать следующие параметры: - ``app`` - Имя приложения, которое должно быть открыто после создания новой сессии. Пример HTTP POST: .. code-block:: text - http://localhost:8080/app/sys/rest/form/sessions/{id}/jexl/mainsel - http://localhost:8080/app/sys/rest/form/sessions/new/jexl/mainsel?appname={имя_приложения} В ответе вернётся команда перенаправления на страницу входа с идентификатором сессии в качестве http-параметра. Пример HTML-страницы. .. code-block:: html Аутентификация ..................... :ref:`spec_services_http_authentication`. .. warning:: Для доступа к сервисам пользователь должен обладать привилегией **Btk_ManagementPkg#useRestDevServices** Удалённая отладка ----------------- Набор служебных сервисов для поддержки удалённой отладки прикладного кода с помощью плагина ``Gtk Debug for Visual Studio Code`` . Адреса сервиса - ``http://{server:port}/app/sys/rest/sourcecode`` - ``http://{server:port}/app/sys/rest/findclasses`` Аутентификация ..................... :ref:`spec_services_http_authentication`. .. warning:: Для доступа к сервисам пользователь должен обладать привилегией **Btk_ManagementPkg#useRestRemoteDebugServices**