okapi-operation
Library which allow to generate OpenAPI's operation definitions (using types from okapi crate) with procedural
macro #[openapi].
Example (with axum-integration feature).
use ;
use ;
use Deserialize;
async
async
Path parameters from function signature (axum)
With the axum feature enabled, path parameters are inferred from the
function signature, so handlers that use the axum Path<...> extractor no
longer need to repeat their names in parameters(path(...)). Two binding
shapes are recognized:
use Path;
use ;
// Single path parameter — inferred as `system: String`.
async
// Tuple — inferred in order: `system: String`, `backup_name: String`.
async : )
Anything more involved (struct extractors, wildcard _ bindings, references,
…) is left to explicit parameters(path(...)) declarations, which always
take precedence over inferred entries with the same name.
Cookie parameters
Cookie parameters are declared the same way as the other kinds:
use *;
async
## Parameters
Parameters support two mutually exclusive ways to describe the parameter value:
- `schema = "Type"` — describes the parameter inline using a JSON Schema derived from the given type ;
- `content = "media/type", schema = "Type"` — describes the parameter via a media type map , useful when the parameter encoding requires a specific media type .
```rust,no_run
async
Features
macro: enables re-import of#[openapi]macro (enabled by default);axum-integration: enables integration withaxum(https://github.com/tokio-rs/axum) crate (implement traits for certainaxumtypes):- Compatibility with
axum: since integration heavely rely onaxumtypes, this crate will be compatible only with few (maybe even one) last versions ofaxum; - Currently supported
axumversions:0.7.x.
- Compatibility with
yaml: enables ability to serve the spec in yaml format in case of presentAcceptheader withyamlvalue. Otherwise, in case of valuesjson|*/*or empty,json's being served (currently affects onlyaxum-integration).
TODO
- support examples on MediaType or Parameter (examples supported on types via
JsonSchemamacro) - support inferring schemas of parameters from function definitions
- support for renaming or changing paths to okapi/schemars/okapi-operations in macro
- more examples
- introduce MSRV policy
- ...