13 个版本 (6 个稳定版)
3.1.4 | 2024年3月25日 |
---|---|
3.1.2 | 2024年3月20日 |
3.0.0-pre.20 | 2024年1月22日 |
3.0.0-pre.18 | 2023年6月15日 |
#24 in #web-client
每月下载量 164
在 2 个 crate 中使用 (via wwsvc-rs)
7KB
125 行
wwsvc-rs
一个用于消费 SoftENGINE 的 WEBSERVICES(他们 ERPSuite 的专有 API)的 Web 客户端。
使用方法
以下是一个使用 derive
功能的示例,这是使用此 crate 的首选方法。
use wwsvc_rs::{WebwareClient, Unregistered, WWSVCGetData, collection};
#[derive(WWSVCGetData, Debug, Clone, serde::Deserialize)]
#[wwsvc(function = "ARTIKEL")]
pub struct ArticleData {
#[serde(rename = "ART_1_25")]
pub article_number: String
}
#[tokio::main]
async fn main() {
let client = WebwareClient::builder()
.webware_url("https://meine-webware.de")
.vendor_hash("my-vendor-hash")
.app_hash("my-app-hash")
.secret("1")
.revision(1)
.build();
let mut registered_client = client.register().await.expect("failed to register");
let articles = ArticleData::get(&mut registered_client, collection! {
"ARTNR" => "Artikel19Prozent",
}).await;
println!("{:#?}", articles);
registered_client.deregister().await.unwrap();
}
然而,您也可以定义自己的数据结构来使用和重用。为此,您可以直接使用客户端
use reqwest::Method;
use wwsvc_rs::{collection, WWSVCGetData, generate_get_response};
#[derive(Debug, serde::Deserialize, Clone)]
pub struct ArticleData {
#[serde(rename = "ART_1_25")]
pub article_number: String,
}
// You don't have to use this macro, it does however make generating responses a lot easier.
generate_get_response!(ArticleResponse, "ARTIKELLISTE", ArticleContainer, "ARTIKEL");
#[tokio::main]
async fn main() {
let client = WebwareClient::builder()
.webware_url("https://meine-webware.de")
.vendor_hash("my-vendor-hash")
.app_hash("my-app-hash")
.secret("1")
.revision(1)
.build();
let mut registered_client = client.register().await.expect("failed to register");
let articles = registered_client.request_generic::<ArticleResponse<ArticleData>>(Method::PUT, "ARTIKEL.GET", 1, collection! {
"ARTNR" => "Artikel19Prozent",
}, None)
.await
.unwrap();
println!("{:#?}", articles.container.list.unwrap());
registered_client.deregister().await.unwrap();
}
安全性
此项目使用 #![forbid(unsafe_code)]
确保所有内容都在 100% 安全的 Rust 中实现。
版本控制
此项目遵循 语义化版本控制。
lib.rs
:
wwsvc-rs-derive
这是一组从 wwsvc-rs 推导特质的宏。
依赖关系
~0.6–1MB
~24K SLoC