17个版本 (5个重大更新)
0.6.5 | 2022年5月7日 |
---|---|
0.6.4 | 2022年5月7日 |
0.6.2 | 2022年2月12日 |
0.5.2 | 2022年2月5日 |
0.1.1 | 2022年2月5日 |
#1117 in HTTP服务器
7KB
127 代码行
Simple Syrup
在Rust中获得并运行GraphQL服务器的最快方式
将以下内容添加到 Cargo.toml
[dependencies]
simple-syrup = "0.6.2"
use simple_syrup::*;
#[tokio::main]
async fn main() {
let schema = Schema::build(QueryRoot, EmptyMutation, EmptySubscription);
SimpleGraphql::new(schema).run().await
}
struct QueryRoot;
#[Object]
impl QueryRoot {
async fn zero(&self) -> u32 {
0
}
}
Running at http://0.0.0.0:3030
Routes:
/graphql
/playground
使用 sqlx 和 sqlite 数据库
use simple_syrup::*;
#[tokio::main]
async fn main() {
let db = SimpleSqlite::new("foo.db");
let schema = Schema::build(QueryRoot, EmptyMutation, EmptySubscription);
SimpleGraphql::new(schema).with_sqlite(db).run().await
}
struct QueryRoot;
#[Object]
impl QueryRoot {
async fn two(&self, ctx: &Context<'_>) -> Result<i64> {
let pool = ctx.data::<SqlitePool>()?;
let result: (i64,) = sqlx::query_as("SELECT 1 + 1").fetch_one(&*pool).await?;
Ok(result.0)
}
}
提供SPA和资源
use simple_syrup::*;
#[tokio::main]
async fn main() {
let schema = Schema::build(QueryRoot, EmptyMutation, EmptySubscription);
SimpleGraphql::new(schema)
.with_spa("assets/public", "assets/public/index.html")
.run()
.await
}
struct QueryRoot;
#[Object]
impl QueryRoot {
async fn zero(&self) -> u32 {
0
}
}
依赖关系
~71MB
~1.5M SLoC