4个版本
0.7.4 | 2021年8月2日 |
---|---|
0.7.3 | 2021年8月2日 |
0.7.2 | 2021年7月15日 |
0.7.1 | 2021年7月7日 |
#1216 in 编码
2MB
1.5K SLoC
此项目旨在启用自动渲染openapi.json
文件,并提供同时提供文档的设施。
使用方法
首先,将以下行添加到您的Cargo.toml
[dependencies]
rocket_okapi = "0.5"
schemars = "0.8"
okapi = { version = "0.5", features = ["derive_json_schema"] }
要将文档添加到一组端点,需要几个步骤。端点的请求和响应类型必须实现JsonSchema
。其次,函数必须带有#[openapi]
标记。之后,您只需将routes!
替换为routes_with_openapi!
。这将向结果Vec<Route>
中添加一个额外的路由,其中包含Swagger所需的openapi.json
文件。现在我们已经有了所需的json文件,我们可以在另一个端点提供swagger网络界面,并且应该能够在浏览器中加载示例!
示例
use rocket::get;
use rocket::serde::json::Json;
use rocket_okapi::{openapi, routes_with_openapi, JsonSchema};
use rocket_okapi::swagger_ui::{make_swagger_ui, SwaggerUIConfig};
#[derive(serde::Serialize, JsonSchema)]
struct Response {
reply: String,
}
#[openapi]
#[get("/")]
fn my_controller() -> Json<Response> {
Json(Response {
reply: "show me the docs!".to_string(),
})
}
fn get_docs() -> SwaggerUIConfig {
use rocket_okapi::swagger_ui::UrlObject;
SwaggerUIConfig {
url: "/my_resource/openapi.json".to_string(),
urls: vec![UrlObject::new("My Resource", "/v1/company/openapi.json")],
..Default::default()
}
}
fn main() {
rocket::build()
.mount("/my_resource", routes_with_openapi![my_controller])
.mount("/swagger", make_swagger_ui(&get_docs()))
.launch();
}
依赖项
~16–50MB
~813K SLoC