用actix和graphql写个服务端
时间: 2024-11-20 21:44:15 浏览: 6
rust-actix-graphql-sqlx-postgresql
Actix 和 GraphQL 是一对常用于 Rust 语言构建高性能 Web 服务的强大组合。Actix 提供了一套轻量级且高效的网络库,而 GraphQL 则是一种数据查询语言,它允许客户端以一种声明式的方式来获取所需的数据。
以下是一个简单的示例,展示如何使用 Actix-web 和 GraphQL-Actix 来创建一个服务端:
```rust
// 首先,你需要导入必要的库
use actix_web::{web, App, HttpServer, Responder};
use graphql_actix::(GraphQL);
// 定义你的 GraphQL schema(模型)
#[derive(Deserialize, Serialize)]
struct Query {
name: String,
}
fn hello(_req: web.Request<()>, q: Query) -> web.Response<String> {
format!("Hello, {}!", q.name)
}
async fn graphiql(req: web.Request<()>) -> impl Responder {
// 使用 GraphiQL 支持图形化查询界面
Ok(graphiql_html!())
}
// 创建 GraphQL 扩展和路由
let graphiql = GraphQL::new()
.endpoint("/graphql")
.add_query(|_| async { Ok::<_, _>(Query {}) })
.build();
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
let server = HttpServer::new(move || {
App::new()
.route("/{name}", web::get().to(hello))
.route("/graphql", graphiql)
.route("/", graphiql)
})
.bind("127.0.0.1:8080")?;
println!("Listening on http://127.0.0.1:8080");
server.await?;
Ok(())
}
阅读全文