#odoo #json-rpc #api-client #api-bindings #api

odoo-api

类型安全的 Odoo JSON-RPC API 实现库,包括 ORM 和 Web 方法。支持会话管理、多数据库、异步和阻塞调用,通过 reqwest 库进行,并支持自定义请求。

10 个版本

0.2.5 2023年2月24日
0.2.4 2023年1月16日
0.1.4 2022年12月24日

#608 in Web 编程

MIT/Apache

230KB
4.5K SLoC

odoo-api

github crates.io docs.rs docs.rs

odoo_api

odoo_api 包提供对 Odoo JSON-RPC API 的类型安全且全面实现的包,包括 ORM 和 Web 方法。它支持会话管理、多数据库、异步和阻塞调用,通过 reqwest 库实现,并支持自定义请求。

API 方法

支持的所有 API 方法列表,请参阅 odoo_api::service

自定义请求

默认情况下,odoo_api 使用 reqwest 作为其 HTTP 实现。也可以提供自己的 HTTP 实现(更多信息请参阅 OdooClient)。

示例

要使用默认的 reqwest 实现,请将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
odoo_api = "0.2"

然后发出请求

use odoo_api::{OdooClient, jvec, jmap};

// build the client and authenticate
let url = "https://demo.odoo.com";
let client = OdooClient::new_reqwest_async(url)?
    .authenticate(
        "some-database",
        "admin",
        "password",
    ).await?;

// fetch a list of users
let users = client.execute(
    "res.users",
    "search",
    jvec![]
).send().await?;

// fetch the login and partner_id fields from user id=1
let info = client.execute_kw(
    "res.users",
    "read",
    jvec![[1]],
    jmap!{
        "fields": ["login", "partner_id"]
    }
).send().await?;

// fetch a list of databases
let databases = client.db_list(false).send().await?;

// fetch server version info
let version_info = client.common_version().send().await?;

依赖项

~2–16MB
~192K SLoC