rsiot/components/cmp_http_server/mod.rs
1//! Компонент для предоставления данных сторонним системам по протоколу HTTP.
2//!
3//! Обрабатывает GET и PUT запросы.
4//!
5//! Компонент основан на веб-фреймворке [Axum](https://crates.io/crates/axum).
6//!
7//! # Структура
8//!
9#![doc = include_str!("doc/diagram.svg")]
10//!
11//! | Название | Описание |
12//! |----------|----------|
13//! | UpdateGetEndpoints | Задача получает сообщения из шины MsgBus и обновляет данные в структуре общего состояния SharedState на основе функции GetEndpointConfig::fn_input. |
14//! | AxumServe | Задача обеспечивает запуск и работу веб-фреймворка Axum. При обработке GET-запросов возвращает данные из общего состояния Shared State. При обработке PUT-запросов формирует исходящие сообщения на основе функции PutEndpointConfig::fn_output. |
15//!
16//! Данные возвращаются в виде структур Json. Для более удобного просмотра можно использовать
17//! расширения к браузеру, например [JSON Beautifier & Editor](https://chromewebstore.google.com/detail/json-beautifier-editor/lpopeocbeepakdnipejhlpcmifheolpl)
18//!
19//! # Примеры
20//!
21//! ```rust
22#![doc = include_str!("../../../examples/cmp_http_server_and_client/cmp_http_server.rs")]
23//! ```
24//!
25//! # Тестирование
26//!
27//! См. папку .bruno
28//!
29
30mod component;
31mod config;
32mod error;
33mod fn_process;
34mod routes;
35mod shared_state;
36mod tasks;
37
38pub use crate::components_config::http_server::{
39 GetEndpoint, GetEndpointConfig, GetEndpointsCollection, PutEndpoint, PutEndpointConfig,
40 PutEndpointsCollection,
41};
42pub use component::{COMPONENT_NAME, Cmp};
43pub use config::Config;
44pub use error::Error;
45
46type Result<T> = std::result::Result<T, Error>;