#dynamics #api-bindings #dataverse #powerplatform

powerplatform-dataverse-service-client

连接到Microsoft Dataverse环境的非官方Rust客户端库

6个版本

0.2.3 2024年8月9日
0.2.2 2023年12月16日
0.2.0 2022年10月26日
0.1.2 2022年6月2日
0.1.1 2022年5月28日

#82 in 身份验证

Download history 4/week @ 2024-05-14 10/week @ 2024-05-21 8/week @ 2024-05-28 1/week @ 2024-06-04 4/week @ 2024-06-25 3/week @ 2024-07-23 16/week @ 2024-07-30 103/week @ 2024-08-06

每月下载量 122

MIT 许可证

78KB
917

powerplatform-dataverse-service-client

连接到Microsoft Dataverse环境的非官方Rust客户端

请在此处报告任何问题: https://github.com/MortenRoemer/powerplatform-dataverse-service-client/issues

计划中(⏳)和已完成(✅)的功能

  • ⏳ 通用OAuth2身份验证
  • ✅ 客户端/密钥认证
  • ✅ 基本CRUD操作
  • ✅ 批量操作
  • ⏳ 自定义操作调用
  • ⏳ 高级ODATA查询选项
  • ⏳ 导航属性处理

创建客户端并连接到dataverse环境

以下是一个创建客户端并通过客户端/密钥方法进行身份验证的示例

let client_id = String::from("<clientid>");
let client_secret = String::from("<clientsecret>");

let client = Client::with_client_secret_auth(
    "https://instance.crm.dynamics.com/",
    "12345678-1234-1234-1234-123456789012",
    client_id,
    client_secret,
);

其中第一个参数是组织URL,第二个参数是客户端需要对其进行身份验证的租户ID

从dataverse读取联系人记录

要从dataverse中读取记录,您首先需要创建一个结构体并为其实现ReadableEntity

#[derive(Deserialize)]
struct Contact {
    contactid: Uuid,
    firstname: String,
    lastname: String,
}

impl ReadEntity for Contact {}

impl Select for Contact {
    fn get_columns() -> &'static [&'static str] {
        &["contactid", "firstname", "lastname"]
    }
}

Select trait筛选出与结构体相关的检索列

然后您可以使用客户端中的retrieve方法检索它

let contact: Contact = client
    .retrieve(
        &ReferenceStruct::new(
            "contacts", 
            Uuid::parse_str("12345678-1234-1234-1234-123456789012").unwrap()
        )
    )
    .await
    .unwrap();

将联系人记录写入dataverse

要将记录写入dataverse,您需要创建一个结构体并为其实现WritableEntity

#[derive(Serialize)]
struct Contact {
    contactid: Uuid,
    firstname: String,
    lastname: String,
}

impl WriteEntity for Contact {}

impl Reference for Contact {
    fn get_reference(&self) -> ReferenceStruct {
        ReferenceStruct::new(
            "contacts", 
            self.contactid,
        )
    }
}

其中Reference trait处理将实体转换为dataverse中对其自身的引用

然后您可以使用create方法写入它

let contact = Contact {
    contactid: Uuid::parse_str("12345678-1234-1234-1234-123456789012").unwrap(),
    firstname: String::from("Testy"),
    lastname: String::from("McTestface"),
};

client.create(&contact).await.unwrap();

依赖项

~10–23MB
~328K SLoC