2 个不稳定版本

0.2.0-alpha.02024 年 5 月 30 日
0.1.0 2024 年 5 月 5 日

#2140网页编程

Download history 101/week @ 2024-04-29 152/week @ 2024-05-06 347/week @ 2024-05-13 673/week @ 2024-05-20 553/week @ 2024-05-27 470/week @ 2024-06-03 727/week @ 2024-06-10 793/week @ 2024-06-17 678/week @ 2024-06-24 1246/week @ 2024-07-01 1530/week @ 2024-07-08 1154/week @ 2024-07-15 1586/week @ 2024-07-22 1718/week @ 2024-07-29 1373/week @ 2024-08-05 1325/week @ 2024-08-12

6,126 每月下载量
dragon_db 中使用

MIT/Apache

315KB
4.5K SLoC

utoipa-scalar

Utoipa build crates.io docs.rs rustc

这个 crate 作为一个桥梁,连接 utoipaScalar OpenAPI 可视化器。

Utoipa-scalar 提供了一种简单机制,将 OpenAPI 规范资源转换为可服务的 HTML 文件,可以通过预定义的框架集成或独立使用并手动提供服务。

您可以在 utoipa 的 Github 仓库 中找到完整示例。

crate 功能

  • actix-web 允许通过 actix-web 提供服务。 version >= 4
  • rocket 允许通过 rocket 提供服务。 version >=0.5
  • axum 允许通过 axum 提供服务。 version >=0.7

安装

仅使用 Scalar,不进行任何样板实现。

[dependencies]
utoipa-scalar = "0.1"

启用 Scalar 与 actix-web 集成。

[dependencies]
utoipa-scalar = { version = "0.1", features = ["actix-web"] }

独立使用

Utoipa-scalar 可以作为独立库使用,只需创建一个新的 Scalar 实例,然后通过您喜欢的网页框架中的 http 处理器以 text/html 的方式提供服务。

Scalar::to_html 方法可以将 Scalar 实例转换为可服务的 HTML 文件。

let scalar = Scalar::new(ApiDoc::openapi());

// Then somewhere in your application that handles http operation.
// Make sure you return correct content type `text/html`.
let scalar = move || async {
    scalar.to_html()
};

示例

通过 actix-web 框架提供服务。

use actix_web::App;
use utoipa_scalar::{Scalar, Servable};

App::new().service(Scalar::with_url("/scalar", ApiDoc::openapi()));

通过 rocket 框架提供服务。

use utoipa_scalar::{Scalar, Servable};

rocket::build()
    .mount(
        "/",
        Scalar::with_url("/scalar", ApiDoc::openapi()),
    );

通过 axum 框架提供服务。

use axum::Router;
use utoipa_scalar::{Scalar, Servable};

let app = Router::<S>::new()
    .merge(Scalar::with_url("/scalar", ApiDoc::openapi()));

使用 Scalar 从 URL 提供 OpenAPI 规范。

Scalar::new(
  "https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml")

使用 Scalar 使用 serde 的 json!() 宏提供自定义 OpenAPI 规范。

Scalar::new(json!({"openapi": "3.1.0"}));

许可

许可证采用Apache 2.0或MIT许可证,由您选择。

除非您明确声明,否则您提交给本crate的任何有意包含的贡献将采用双重许可,不附加任何额外条款或条件。

依赖项

~1–34MB
~535K SLoC