Дерево страниц

Рекомендуем к прочтению руководство по работе с Trassir SDK: https://www.dssl.ru/files/trassir/manual/ru/sdk.html

Модуль exthttp позволяет с легкостью расширять существующий функционал SDK трассира а также позволяет разработаывать модули автоматизации 2.0 с веб-интерфесом.

Структура модуля

  • auth
    • login.py - Готовые хендлеры для авторизации
    • user.py - Класс User для работы пользователем от имени которого пришел запрос
  • core
    • app.py - Основной класс ExtHttpApp с помощью которого можно регистрировать новые обработчики для SDK
    • handlers.py - Некоторые стандартные хендлеры
    • module.py - Логика регистрации приложения в модулях автоматизации (не используется для api)
  • http
    • request.py - Объект Reqeust, экземпляры которого передаются в хендлеры при запросе
    • response.py - Готовые объекты для ответа на запрос
  • constant.py - Некоторые глобальные константы
  • utils.py - Вспомогательные функции


Обработчики созданные с помощью скрипта доступны по ссылке, вида: https://{server_ip}:{https_port}/{app_basename}/{route_path}, где:

  • server_ip - Адрес сервера Trassir
  • https_port - HTTPS Порт сервера. Можно изменить в настройках сервера, по умолчанию 8080. Для Trassir Client используется порт 8081
  • app_basename - Базовое имя приложения, передается в качестве аргумента в функцию create_app
  • route_path - Отдельная ссылка для хендлера

Минимальное приложение может выглядеть примерно так

from exthttp import create_app, BaseHandler
from exthttp import http

app = create_app("ExampleApp")


@app.route("hello")
class HelloWorldHandler(BaseHandler):
    def get(self, request, *args, **kwargs):
        return http.JsonResponse({"message": "Hello World"})

Что делает данный код? 

  1. Импорт необходимых зависимостей
    1. create_app - Функция создания экземпляра класса exthttp.core.app.ExtHttpApp
      Принимает app_basename в качестве аргумента, которое используется в построении URL запроса
    2. BaseHandler - Родительский класс для всех пользовательских хендлеров, которые отвечают за обработку соотвествующего route_path
      Содержит методы get/post которые необходимо переопределить для реализации ответа сервера на соотвествующий запрос.
    3. http - содержит готовые объекты для ответа сервера: HttpResponseHttpResponseNotFoundJsonResponse и др.
  2. Создание приложения, с "ExampleApp" - это также задает начальный путь для всех последующих обработчиков вида https://{server_ip}:{https_port}/ExampleApp/{route_path}
  3. Создание нового обработчика с route_path = "hello"
    1. С помощью декоратора app.route задаем route_path
    2. Создаем новый хендлер, который обязательно наследуюется от Basehandler
    3. Переопределяем метод get, чтобы на запрос GET https://localhost:8080/s/ExampleApp/hello нам возвращался json ответ
      Методы get/post в качестве обязательного аргумента принимают объект request