#tauri-plugin #graphql #ipc #type-safe #graphql-schema #requests #javascript

tauri-plugin-graphql

Tauri 插件,通过 GraphQL 实现类型安全的 IPC

10 个版本 (4 个稳定版)

2.1.0 2023 年 1 月 10 日
2.0.1 2022 年 9 月 22 日
1.0.0 2022 年 6 月 16 日
0.2.4 2022 年 5 月 25 日
0.1.0 2022 年 3 月 30 日

网页编程 中排名 #1208

MIT 许可证

71KB
343

Tauri 插件 graphql

Crates.io Documentation MIT licensed

一个 Tauri 插件,通过 GraphQL 实现类型安全的 IPC。

安装

Rust

[dependencies]
tauri-plugin-graphql = "2.0.0"

JavaScript

当前唯一的客户端适配器是 tauri-plugin-graphql-urql,它是 urql 的自定义交换。如果您需要其他 GraphQL 客户端的适配器,请提交 PR!

版本(点击查看变更日志)
tauri-plugin-graphql-urql urql adapter version

使用方法

您需要注册该插件,并给它一个 async_graphql::Schema。此模式将用于满足请求。

use async_graphql::{Schema, Object, EmptySubscription, EmptyMutation, Result as GraphQLResult, SimpleObject};

#[derive(SimpleObject, Debug, Clone)]
struct ListItem {
    id: i32,
    text: String
}

impl ListItem {
    pub fn new(text: String) -> Self {
        Self {
            id: rand::random::<i32>(),
            text
        }
    }
}

struct Query;

#[Object]
impl Query {
    async fn list(&self) -> GraphQLResult<Vec<ListItem>> {
        let item = vec![
            ListItem::new("foo".to_string()),
            ListItem::new("bar".to_string())
        ];

        Ok(item)
    }
}

fn main() {
    let schema = Schema::new(
        Query,
        EmptyMutation,
        EmptySubscription,
    );

    tauri::Builder::default()
        .plugin(tauri_plugin_graphql::init(schema))
        .run(tauri::generate_context!())
        .expect("failed to run app");
}

贡献

如果您想帮忙,有几个方面需要改进

  • 客户端适配器 - 目前只有一个 urql 适配器;拥有更多客户端库的适配器将非常好。

欢迎 PR!

许可证

MIT © Jonas Kruckenberg

依赖项

~25–67MB
~1M SLoC