Crates.io | struct2swagger |
lib.rs | struct2swagger |
version | 0.1.6 |
source | src |
created_at | 2019-08-30 16:10:06.507379 |
updated_at | 2020-10-04 20:00:23.041232 |
description | Create Swagger OpenApi3 from your structs |
homepage | |
repository | https://github.com/allevo/struct2swagger |
max_upload_size | |
id | 160940 |
size | 45,347 |
Utilities for generating OpenAPI Specification from your structures
cargo add struct2swagger_derive struct2swagger
#[macro_use]
extern crate struct2swagger_derive;
#[macro_use]
extern crate struct2swagger;
#[macro_use]
extern crate serde_json;
use struct2swagger::{JsonSchemaDefinition, QueryDefinition, swagger_object::SwaggerObject};
use serde_json::Result;
#[derive(Deserialize, Swagger)]
pub struct Who {
pub name: Option<String>,
}
#[derive(Serialize, Swagger)]
pub struct HelloWorldResponse {
pub say: String,
}
fn get_openapi_spec() -> String {
let mut swagger_object = SwaggerObject::new(
"the webserver name", // title
"1.0.0" // version
);
swagger_add_router!(
swagger_object, // obj
"GET", // method
"/", // path
Who, // query parameters
200, // expected status code
"say", // description
HelloWorldResponse // struct in output
);
let json = serde_json::to_string(&address).unwrap();
json
}
For other examples see tests
Every contribution is welcomed: Open an issue and fire a PR!
MIT as described here