Класс для работы с HTTP на клиентской программе пользователя
Страница в процессе разработки. |
Пакет поддержки оборудования Engee предоставляет пользователю возможность выступать в качестве HTTP-клиента для общения с внешними сервисами через REST API.
#
Main.EngeeDeviceManager.Devices.HTTP.close_session
— Method
function close_session(device::HttpType)::Nothing
Деинициализация ранее созданного HTTP клиента.
Аргументы
device::HttpType
: объект типа HTTP.Http().
#
Main.EngeeDeviceManager.Devices.HTTP.delete
— Function
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-запроса.
-
-
#
Main.EngeeDeviceManager.Devices.HTTP.get
— Function
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-запроса.
-
-
#
Main.EngeeDeviceManager.Devices.HTTP.init_session
— Function
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
— отключена).
#
Main.EngeeDeviceManager.Devices.HTTP.patch
— Function
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-запроса.
-
-
#
Main.EngeeDeviceManager.Devices.HTTP.post
— Function
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-запроса.
-
-
#
Main.EngeeDeviceManager.Devices.HTTP.put
— Function
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-запроса.
-
-
#
Main.EngeeDeviceManager.Devices.HTTP.remove_header
— Method
function remove_header(device::HttpType, key::String)::Nothing
Функция для удаления указанного заголовков запроса из существующих заголовков.
Аргументы
-
device::HttpType
: объект типа HTTP.Http(). -
key::String
: ключ устанавливаемого заголовка запроса.
#
Main.EngeeDeviceManager.Devices.HTTP.set_header
— Method
function set_header(device::HttpType, key::String, value::String)::Nothing
Функция для установки заголовков запроса к уже существующим заголовкам.
Аргументы
-
device::HttpType
: объект типа HTTP.Http(). -
key::String
: ключ устанавливаемого заголовка запроса.