29 个版本

0.1.28 2022 年 11 月 25 日
0.1.27 2022 年 11 月 25 日
0.1.25 2022 年 10 月 6 日
0.1.24 2022 年 8 月 25 日
0.1.6 2022 年 5 月 31 日

#559 in HTTP 服务器

每月 27 次下载

MIT 许可证

32KB
756

dev_api

一组预配置的 Rust Web API 模块。目前处于早期开发阶段。

目的

我们希望开源我们在 Rust 中的后端开发方式,并提供一个快速简单的方式开始编写 Web API,而不会让您陷入另一个自定义框架。

示例

注意:由于此项目处于早期阶段,示例并不完整。您需要安装 actix-web 并创建自己的配置和依赖项,以便将其注入 app_data。

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    dev_api::tracing::init("my-service".to_string()).expect("Failed to initialize tracer.");
    // All logs should be wrapped in a span. This is automatically done for each controller.
    tracing::info_span!("main:server_starting").in_scope(|| {
        tracing::info!("Starting server...");
    });



    let server = HttpServer::new(move || {
        // The configure function must be a ServiceConfig factory function: https://docs.rs/actix-web/latest/actix_web/web/struct.ServiceConfig.html
        let configs: Vec<fn(&mut web::ServiceConfig)> = vec![
            users::configure,
            products::configure
        ];

        // dev_api will mount your services, configure the app, and send the app back so you can extend it further.
        let app = dev_api::http::new(configs);

        // Extend the app with your own dependencies.
        app
            .app_data(web::Data::new(jwt.clone()))
            .app_data(web::Data::new(users_repo.clone()))
            .app_data(web::Data::new(products_repo.clone()))
    })
    .bind(("0.0.0.0", 8080))?
    .run();

    tracing::info_span!("main:server_started").in_scope(|| {
        tracing::info!("Server started!");
    });

    server.await

请查看源代码以获取更多信息。 src/http.rs 将显示我们如何设置服务器应用程序。

当它正常工作时,您可以通过在浏览器中访问 localhost:8080 来验证它。您应该在您的网络选项卡中收到一个空的 200 成功响应。

依赖项

~39–55MB
~1M SLoC