7 个版本 (4 个主要版本)
新 4.0.1-alpha.1 | 2024年8月23日 |
---|---|
4.0.1-alpha.0 | 2024年5月30日 |
3.0.0 | 2024年1月9日 |
2.0.0 | 2023年11月28日 |
0.1.0 | 2023年8月7日 |
#2104 在 网页开发
13,074 每月下载量
在 15 个 crate (12 个直接使用) 中使用
340KB
5K SLoC
utoipa-rapidoc
此 crate 作为 uToipa 和 RapiDoc OpenAPI 可视化器之间的桥梁。
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.0或MIT。
除非您明确声明,否则您有意提交的任何贡献,将双重许可,不附加任何额外条款或条件。
依赖项
~1–34MB
~539K SLoC