15个版本
0.3.1 | 2024年7月7日 |
---|---|
0.3.0 | 2024年5月16日 |
0.2.3 | 2024年1月16日 |
0.1.9 | 2023年12月5日 |
0.1.5 | 2023年4月24日 |
#87 in HTTP服务器
894 每月下载量
用于 2 crates
475KB
10K SLoC
官方社区维护的Clerk SDK for Rust
有关更详细的文档,请参阅以下链接
此SDK经常更新,以跟上实际Clerk API的任何更改。如果您发现需要更新或与官方Clerk API不一致的内容,请打开一个问题!
示例
检查
/examples
目录中的示例
使用传统的http请求到有效的clerk端点
use tokio;
use clerk_rs::{clerk::Clerk, ClerkConfiguration, endpoints::ClerkGetEndpoint};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = ClerkConfiguration::new(None, None, Some("sk_test_key".to_string()), None);
let client = Clerk::new(config);
let res = client.get(ClerkGetEndpoint::GetUserList).await?;
Ok(())
}
使用clerk-rs方法
use tokio;
use clerk_rs::{clerk::Clerk, ClerkConfiguration, apis::emails_api::Email};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = ClerkConfiguration::new(None, None, Some("sk_test_key".to_string()), None);
let client = Clerk::new(config);
Email::create(&client, Some(your_clerk_email));
Ok(())
}
使用Clerk.dev保护actix-web端点
启用 actix
功能
use actix_web::{web, App, HttpServer, Responder};
use clerk_rs::{validators::actix::ClerkMiddleware, ClerkConfiguration};
async fn index() -> impl Responder {
"Hello world!"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
let config = ClerkConfiguration::new(None, None, Some("your_secret_key".to_string()), None);
App::new()
.wrap(ClerkMiddleware::new(config, None, true))
.route("/index", web::get().to(index))
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
使用Clerk.dev保护axum端点
启用 axum
功能
use axum::{routing::get, Router};
use clerk_rs::validators::axum::ClerkLayer;
use clerk_rs::ClerkConfiguration;
use std::net::SocketAddr;
async fn index() -> &'static str {
"Hello world!"
}
#[tokio::main]
async fn main() -> std::io::Result<()> {
let config: ClerkConfiguration = ClerkConfiguration::new(None, None, Some("your_secret_key".to_string()), None);
let app = Router::new().route("/index", get(index)).layer(ClerkLayer::new(config, None, true));
let addr = SocketAddr::from(([0, 0, 0, 0], 8080));
let listener = tokio::net::TcpListener::bind(addr).await?;
axum::serve(listener, app).await
}
路线图
- 支持其他http客户端,包括默认的reqwest客户端(如hyper)
- 为hyper客户端提供Tokio和async-std异步运行时
- 可选的reqwest阻塞客户端
- 支持通过同源上的__session cookie进行授权
- 为axum、rocket、warp添加验证器支持
生产用户
依赖项
~12–26MB
~521K SLoC