Документация Engee

Класс для работы с HTTP на клиентской программе пользователя

Страница в процессе разработки.

Пакет поддержки оборудования Engee предоставляет пользователю возможность выступать в качестве HTTP-клиента для общения с внешними сервисами через REST API.

function close_session(device::HttpType)::Nothing

Деинициализация ранее созданного HTTP клиента.

Аргументы

device::HttpType: объект типа HTTP.Http().

function delete(device::HttpType, endpoint::String, request_data::HTTPRequestData, headers::Dict{String, String}=Dict(), timeout::Union{Int64, Nothing}=nothing)::HTTPResponse

DELETE-запрос REST API.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • endpoint::String: конечная точка для обращения к HTTP-ресурсу.

  • request_data::HTTPRequestData: объект типа HTTPRequestData. HTTPRequestData имеет сигнатуру: julia-repl Base.@kwdef struct HTTPRequestData params::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing json_data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing files::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing end Описание: Тело запроса (если включает в себя данные) и json-данные (если есть)

    • params: параметры

      • Тип: словарь или nothing (необязательный).

      • Назначение: параметры URL-строки запроса (то, что идет после ? в адресе). Пример: {"page": 1, "limit": 20, "sort": "name"}?page=1&limit=20&sort=name.

      • Поддерживаемые типы значений:

        • Числа (целые и дробные);

        • Строки;

        • Логические значения (true/false);

        • Бинарные данные (байты);

        • Списки примитивных типов; Вложенные словари.

    • data: данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате x-www-form-urlencoded.

      • Использование: для отправки форм обычных данных (не файлов). Пример: {"username": "john", "password": "secret"}

      • Поддерживаемые типы: такие же, как у params.

    • json_data: JSON-данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате JSON.

      • Использование: для REST API, где ожидается JSON. Пример: {"user": {"name": "John", "age": 30}}.

      • Особенность: автоматически сериализуется в JSON строку.

      • Поддерживаемые типы: такие же, как у params.

    • files: файлы

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для загрузки файлов (мультипарт-запросы).

      • Использование: для отправки файлов через формы. Пример: {"avatar": "binary_data", "document": "file_content"}.

      • Поддерживаемые типы: такие же, как у params, но обычно содержит бинарные данные.

      • Пример создания:

        params = Dict("param1" => "value1", "param2" => "value2")
        request_data = HTTPRequestData(params=params, data=nothing, json_data=nothing, files=nothing)
    • headers: дополнительные заголовки. Например, настройка заголовков соединения и MIME-type запросов:

      headers = Dict{String, String}()
      headers["connection"] = "keep-alive"
      headers["Accept"] = "application/json"
    • timeout: таймаут на ожидание ответа в секундах. Возвращает HTTPResponse (объект типа HTTPResponse). Пример:

      Base.@kwdef struct HTTPResponse
      text_content::Union{String, Nothing} = nothing
      bytes_content::Union{Vector{UInt8}, Nothing} = nothing
      elapsed::Union{HTTPTimedelta, Nothing} = nothing
      status_code::Union{Int64, Nothing} = nothing
      end
      • text_content: HTTP-ответ в текстовом представлении;

      • bytes_content: HTTP-ответ в байтовом представлении;

      • elapsed: время, затраченное на осуществление обработки запроса;

      • status_code: статус операции HTTP-запроса.

function get(device::HttpType, endpoint::String, request_data::HTTPRequestData, headers::Dict{String, String}=Dict(), timeout::Union{Int64, Nothing}=nothing)::HTTPResponse

GET-запрос REST API.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • endpoint::String: конечная точка для обращения к HTTP-ресурсу.

  • request_data::HTTPRequestData: объект типа HTTPRequestData. HTTPRequestData имеет сигнатуру: julia-repl Base.@kwdef struct HTTPRequestData params::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing json_data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing files::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing end Описание: Тело запроса (если включает в себя данные) и json-данные (если есть)

    • params: параметры

      • Тип: словарь или nothing (необязательный).

      • Назначение: параметры URL-строки запроса (то, что идет после ? в адресе). Пример: {"page": 1, "limit": 20, "sort": "name"}?page=1&limit=20&sort=name.

      • Поддерживаемые типы значений:

        • Числа (целые и дробные);

        • Строки;

        • Логические значения (true/false);

        • Бинарные данные (байты);

        • Списки примитивных типов; Вложенные словари.

    • data: данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате x-www-form-urlencoded.

      • Использование: для отправки форм обычных данных (не файлов). Пример: {"username": "john", "password": "secret"}

      • Поддерживаемые типы: такие же, как у params.

    • json_data: JSON-данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате JSON.

      • Использование: для REST API, где ожидается JSON. Пример: {"user": {"name": "John", "age": 30}}.

      • Особенность: автоматически сериализуется в JSON строку.

      • Поддерживаемые типы: такие же, как у params.

    • files: файлы

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для загрузки файлов (мультипарт-запросы).

      • Использование: для отправки файлов через формы. Пример: {"avatar": "binary_data", "document": "file_content"}.

      • Поддерживаемые типы: такие же, как у params, но обычно содержит бинарные данные.

      • Пример создания:

        params = Dict("param1" => "value1", "param2" => "value2")
        request_data = HTTPRequestData(params=params, data=nothing, json_data=nothing, files=nothing)
    • headers: дополнительные заголовки. Например, настройка заголовков соединения и MIME-type запросов:

      headers = Dict{String, String}()
      headers["connection"] = "keep-alive"
      headers["Accept"] = "application/json"
    • timeout: таймаут на ожидание ответа в секундах. Возвращает HTTPResponse (объект типа HTTPResponse). Пример:

      Base.@kwdef struct HTTPResponse
      text_content::Union{String, Nothing} = nothing
      bytes_content::Union{Vector{UInt8}, Nothing} = nothing
      elapsed::Union{HTTPTimedelta, Nothing} = nothing
      status_code::Union{Int64, Nothing} = nothing
      end
      • text_content: HTTP-ответ в текстовом представлении;

      • bytes_content: HTTP-ответ в байтовом представлении;

      • elapsed: время, затраченное на осуществление обработки запроса;

      • status_code: статус операции HTTP-запроса.

function init_session(device::HttpType, base_url::String="", auth::Union{Tuple{String}, String, Nothing}=nothing, auth_type::String="bearer", headers::Dict{String, String}=Dict(), timeout::Int64=30, verify_ssl::Bool=true)::Bool

Инициализация HTTP клиента для общения с HTTP-сервером.

Аргументы

  • device: объект типа HTTP.Http().

  • base_url: базовый URL для всех запросов.

  • auth: данные для авторизации, либо кортеж (username, password), либо строка с токеном.

  • auth_type: тип аутентификации (basic, digest, или bearer).

  • headers: заголовки по умолчанию для включения в каждый запрос.

  • timeout: таймаут ожидания ответа по умолчанию в секундах.

  • verify_ssl: верификация SSL сертификатов (true — включена, false — отключена).

function patch(device::HttpType, endpoint::String, request_data::HTTPRequestData, headers::Dict{String, String}=Dict(), timeout::Union{Int64, Nothing}=nothing)::HTTPResponse

PATCH-запрос REST API.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • endpoint::String: конечная точка для обращения к HTTP-ресурсу.

  • request_data::HTTPRequestData: объект типа HTTPRequestData. HTTPRequestData имеет сигнатуру: julia-repl Base.@kwdef struct HTTPRequestData params::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing json_data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing files::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing end Описание: Тело запроса (если включает в себя данные) и json-данные (если есть)

    • params: параметры

      • Тип: словарь или nothing (необязательный).

      • Назначение: параметры URL-строки запроса (то, что идет после ? в адресе). Пример: {"page": 1, "limit": 20, "sort": "name"}?page=1&limit=20&sort=name.

      • Поддерживаемые типы значений:

        • Числа (целые и дробные);

        • Строки;

        • Логические значения (true/false);

        • Бинарные данные (байты);

        • Списки примитивных типов; Вложенные словари.

    • data: данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате x-www-form-urlencoded.

      • Использование: для отправки форм обычных данных (не файлов). Пример: {"username": "john", "password": "secret"}

      • Поддерживаемые типы: такие же, как у params.

    • json_data: JSON-данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате JSON.

      • Использование: для REST API, где ожидается JSON. Пример: {"user": {"name": "John", "age": 30}}.

      • Особенность: автоматически сериализуется в JSON строку.

      • Поддерживаемые типы: такие же, как у params.

    • files: файлы

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для загрузки файлов (мультипарт-запросы).

      • Использование: для отправки файлов через формы. Пример: {"avatar": "binary_data", "document": "file_content"}.

      • Поддерживаемые типы: такие же, как у params, но обычно содержит бинарные данные.

      • Пример создания:

        params = Dict("param1" => "value1", "param2" => "value2")
        request_data = HTTPRequestData(params=params, data=nothing, json_data=nothing, files=nothing)
    • headers: дополнительные заголовки. Например, настройка заголовков соединения и MIME-type запросов:

      headers = Dict{String, String}()
      headers["connection"] = "keep-alive"
      headers["Accept"] = "application/json"
    • timeout: таймаут на ожидание ответа в секундах. Возвращает HTTPResponse (объект типа HTTPResponse). Пример:

      Base.@kwdef struct HTTPResponse
      text_content::Union{String, Nothing} = nothing
      bytes_content::Union{Vector{UInt8}, Nothing} = nothing
      elapsed::Union{HTTPTimedelta, Nothing} = nothing
      status_code::Union{Int64, Nothing} = nothing
      end
      • text_content: HTTP-ответ в текстовом представлении;

      • bytes_content: HTTP-ответ в байтовом представлении;

      • elapsed: время, затраченное на осуществление обработки запроса;

      • status_code: статус операции HTTP-запроса.

function post(device::HttpType, endpoint::String, request_data::HTTPRequestData, headers::Dict{String, String}=Dict(), timeout::Union{Int64, Nothing}=nothing)::HTTPResponse

POST-запрос REST API.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • endpoint::String: конечная точка для обращения к HTTP-ресурсу.

  • request_data::HTTPRequestData: объект типа HTTPRequestData. HTTPRequestData имеет сигнатуру: julia-repl Base.@kwdef struct HTTPRequestData params::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing json_data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing files::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing end Описание: Тело запроса (если включает в себя данные) и json-данные (если есть)

    • params: параметры

      • Тип: словарь или nothing (необязательный).

      • Назначение: параметры URL-строки запроса (то, что идет после ? в адресе). Пример: {"page": 1, "limit": 20, "sort": "name"}?page=1&limit=20&sort=name.

      • Поддерживаемые типы значений:

        • Числа (целые и дробные);

        • Строки;

        • Логические значения (true/false);

        • Бинарные данные (байты);

        • Списки примитивных типов; Вложенные словари.

    • data: данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате x-www-form-urlencoded.

      • Использование: для отправки форм обычных данных (не файлов). Пример: {"username": "john", "password": "secret"}

      • Поддерживаемые типы: такие же, как у params.

    • json_data: JSON-данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате JSON.

      • Использование: для REST API, где ожидается JSON. Пример: {"user": {"name": "John", "age": 30}}.

      • Особенность: автоматически сериализуется в JSON строку.

      • Поддерживаемые типы: такие же, как у params.

    • files: файлы

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для загрузки файлов (мультипарт-запросы).

      • Использование: для отправки файлов через формы. Пример: {"avatar": "binary_data", "document": "file_content"}.

      • Поддерживаемые типы: такие же, как у params, но обычно содержит бинарные данные.

      • Пример создания:

        params = Dict("param1" => "value1", "param2" => "value2")
        request_data = HTTPRequestData(params=params, data=nothing, json_data=nothing, files=nothing)
    • headers: дополнительные заголовки. Например, настройка заголовков соединения и MIME-type запросов:

      headers = Dict{String, String}()
      headers["connection"] = "keep-alive"
      headers["Accept"] = "application/json"
    • timeout: таймаут на ожидание ответа в секундах. Возвращает HTTPResponse (объект типа HTTPResponse). Пример:

      Base.@kwdef struct HTTPResponse
      text_content::Union{String, Nothing} = nothing
      bytes_content::Union{Vector{UInt8}, Nothing} = nothing
      elapsed::Union{HTTPTimedelta, Nothing} = nothing
      status_code::Union{Int64, Nothing} = nothing
      end
      • text_content: HTTP-ответ в текстовом представлении;

      • bytes_content: HTTP-ответ в байтовом представлении;

      • elapsed: время, затраченное на осуществление обработки запроса;

      • status_code: статус операции HTTP-запроса.

function put(device::HttpType, endpoint::String, request_data::HTTPRequestData, headers::Dict{String, String}=Dict(), timeout::Union{Int64, Nothing}=nothing)::HTTPResponse

PUT-запрос REST API.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • endpoint::String: конечная точка для обращения к HTTP-ресурсу.

  • request_data::HTTPRequestData: объект типа HTTPRequestData. HTTPRequestData имеет сигнатуру: julia-repl Base.@kwdef struct HTTPRequestData params::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing json_data::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing files::Union{Dict{String, Union{Int64, Float64, String, Bool, Vector{UInt8}, Vector{Union{Int64, Float64, String, Bool}}, Dict{String, Union{Int64, Float64, String, Bool, Dict{String, Union{Int64, Float64, String, Bool}}}}}}, Nothing} = nothing end Описание: Тело запроса (если включает в себя данные) и json-данные (если есть)

    • params: параметры

      • Тип: словарь или nothing (необязательный).

      • Назначение: параметры URL-строки запроса (то, что идет после ? в адресе). Пример: {"page": 1, "limit": 20, "sort": "name"}?page=1&limit=20&sort=name.

      • Поддерживаемые типы значений:

        • Числа (целые и дробные);

        • Строки;

        • Логические значения (true/false);

        • Бинарные данные (байты);

        • Списки примитивных типов; Вложенные словари.

    • data: данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате x-www-form-urlencoded.

      • Использование: для отправки форм обычных данных (не файлов). Пример: {"username": "john", "password": "secret"}

      • Поддерживаемые типы: такие же, как у params.

    • json_data: JSON-данные

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для тела запроса в формате JSON.

      • Использование: для REST API, где ожидается JSON. Пример: {"user": {"name": "John", "age": 30}}.

      • Особенность: автоматически сериализуется в JSON строку.

      • Поддерживаемые типы: такие же, как у params.

    • files: файлы

      • Тип: словарь или nothing (необязательный).

      • Назначение: данные для загрузки файлов (мультипарт-запросы).

      • Использование: для отправки файлов через формы. Пример: {"avatar": "binary_data", "document": "file_content"}.

      • Поддерживаемые типы: такие же, как у params, но обычно содержит бинарные данные.

      • Пример создания:

        params = Dict("param1" => "value1", "param2" => "value2")
        request_data = HTTPRequestData(params=params, data=nothing, json_data=nothing, files=nothing)
    • headers: дополнительные заголовки. Например, настройка заголовков соединения и MIME-type запросов:

      headers = Dict{String, String}()
      headers["connection"] = "keep-alive"
      headers["Accept"] = "application/json"
    • timeout: таймаут на ожидание ответа в секундах. Возвращает HTTPResponse (объект типа HTTPResponse). Пример:

      Base.@kwdef struct HTTPResponse
      text_content::Union{String, Nothing} = nothing
      bytes_content::Union{Vector{UInt8}, Nothing} = nothing
      elapsed::Union{HTTPTimedelta, Nothing} = nothing
      status_code::Union{Int64, Nothing} = nothing
      end
      • text_content: HTTP-ответ в текстовом представлении;

      • bytes_content: HTTP-ответ в байтовом представлении;

      • elapsed: время, затраченное на осуществление обработки запроса;

      • status_code: статус операции HTTP-запроса.

function remove_header(device::HttpType, key::String)::Nothing

Функция для удаления указанного заголовков запроса из существующих заголовков.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • key::String: ключ устанавливаемого заголовка запроса.

function set_header(device::HttpType, key::String, value::String)::Nothing

Функция для установки заголовков запроса к уже существующим заголовкам.

Аргументы

  • device::HttpType: объект типа HTTP.Http().

  • key::String: ключ устанавливаемого заголовка запроса.