#io #consuming #client #reqwest #query #string #query-string

sanity

基于 reqwest 的 Rust 消费 https://sanity.io 的开源客户端

2 个版本

0.1.1 2019年11月25日
0.1.0 2019年11月25日

#9 in #consuming

MIT 许可证

9KB
92

Sanity RS

使用 Rust 消费 https://sanity.io 的开源客户端,基于 reqwest

这个项目的目标是提供一个相对底层的包装器,用于消费由 Sanity 提供的 API。第一个目标是确保所有基础功能都覆盖,以便运行裸 GROQ 查询字符串,然后我想要添加对某种 ORM 的支持来运行查询(如果你知道任何实现此功能的简单方法,请告诉我)。

扩展目标是添加一个高级的 GraphQL 消费者,使 Sanity 操作变得简单,但由于已经有其他针对 Rust 的 GraphQL 项目,因此这不是一个高优先级的项目 :)。

此项目处于 alpha 阶段,因此功能非常有限。

入门

sanity 包添加到您的依赖项中

[dependencies]
sanity = "0.1.0"

或直接通过 github

[dependencies]
sanity = { git = "https://github.com/DukeFerdinand/sanity.rs" }

然后像包含任何其他外部包一样包含它

// main.rs or wherever

...
extern crate sanity;
...

fn main {
  ...
}

用法

截至现在(v0.1.0),仅支持 get 请求。

GET 请求

extern crate sanity;
use sanity::helpers::get_json;

fn main() {
  // Ideally you would pull these values from an env of some sort
  // PLEASE do not use bare strings in your project
  let mut sn = sanity::create(
    "proj_id",                // Sanity project ID to use
    "data_set",               // Data set to query. i.e. "development"
    "Long_string_for_token",  // Bearer token
    false,                    // Use prod cdn or not
  );
  let res = sn.get(&String::from("*[_type == 'recipe']"));
  if res.is_ok() {
    println!("{:?}", get_json(res.unwrap()));
  }
}

贡献

我承认我对 Rust 比较新手,所以如果您看到任何需要更改的内容或任何希望添加的内容,请 在 github 问题上 提出 feature request :)。

我愿意接受任何和所有的 PR,只要它们符合项目并包含良好的代码!

依赖项

~20MB
~434K SLoC