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服务器

Download history 134/week @ 2024-04-25 143/week @ 2024-05-02 217/week @ 2024-05-09 363/week @ 2024-05-16 151/week @ 2024-05-23 251/week @ 2024-05-30 286/week @ 2024-06-06 118/week @ 2024-06-13 76/week @ 2024-06-20 141/week @ 2024-06-27 314/week @ 2024-07-04 142/week @ 2024-07-11 128/week @ 2024-07-18 314/week @ 2024-07-25 210/week @ 2024-08-01 231/week @ 2024-08-08

894 每月下载量
用于 2 crates

MIT 许可证

475KB
10K SLoC

crates.io download count badge

官方社区维护的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