7 个版本 (4 个主要版本)

4.0.1-alpha.1 2024年8月23日
4.0.1-alpha.02024年5月30日
3.0.0 2024年1月9日
2.0.0 2023年11月28日
0.1.0 2023年8月7日

#2104网页开发

Download history 3083/week @ 2024-05-03 2687/week @ 2024-05-10 2251/week @ 2024-05-17 2799/week @ 2024-05-24 3061/week @ 2024-05-31 1964/week @ 2024-06-07 2453/week @ 2024-06-14 1862/week @ 2024-06-21 1935/week @ 2024-06-28 2179/week @ 2024-07-05 2376/week @ 2024-07-12 2102/week @ 2024-07-19 2952/week @ 2024-07-26 3147/week @ 2024-08-02 3286/week @ 2024-08-09 3262/week @ 2024-08-16

13,074 每月下载量
15 个 crate (12 个直接使用) 中使用

MIT/Apache

340KB
5K SLoC

utoipa-rapidoc

此 crate 作为 uToipa 和 RapiDoc OpenAPI 可视化器之间的桥梁。

Utoipa build crates.io docs.rs rustc

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

您可以从 uToipa 的 Github 仓库 中找到完整示例。

crate 功能

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

安装

仅使用 RapiDoc 而不进行任何样板代码实现。

[dependencies]
utoipa-rapidoc = "4"

启用 RapiDoc 与 actix-web 的集成。

[dependencies]
utoipa-rapidoc = { version = "4", features = ["actix-web"] }

独立使用

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

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

let rapidoc = RapiDoc::new("/api-docs/openapi.json");

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

自定义

Utoipa-rapidoc 可以通过 RapiDoc::custom_html 方法进行自定义和配置。此方法允许用户使用自定义的 HTML 模板来修改 RapiDoc UI 的外观。

模板应包含$specUrl变量,该变量将在创建新的RapiDoc实例时,通过RapiDoc::new函数使用用户定义的OpenAPI规范URL进行替换。变量将在RapiDoc::to_html函数执行期间被替换。

使用自定义模板覆盖HTML模板。

let html = "...";
RapiDoc::new("/api-docs/openapi.json").custom_html(html);

示例

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

use actix_web::App;
use utoipa_rapidoc::RapiDoc;

App::new()
    .service(
        RapiDoc::with_openapi("/api-docs/openapi.json", ApiDoc::openapi()).path("/rapidoc")
    );

通过rocket框架提供服务。

use utoipa_rapidoc::RapiDoc;

rocket::build()
    .mount(
        "/",
        RapiDoc::with_openapi("/api-docs/openapi.json", ApiDoc::openapi()).path("/rapidoc"),
    );

通过axum框架提供服务。

use axum::Router;
use utoipa_rapidoc::RapiDoc;

let app = Router::<S>::new()
    .merge(
        RapiDoc::with_openapi("/api-docs/openapi.json", ApiDoc::openapi()).path("/rapidoc")
    );

许可证

根据您的选择,许可为Apache 2.0MIT

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

依赖项

~1–34MB
~539K SLoC