6 releases (3 breaking)
0.4.0 | Mar 16, 2024 |
---|---|
0.3.0 | Mar 16, 2024 |
0.2.0 | Mar 15, 2024 |
0.1.2 | Mar 14, 2024 |
#1243 in Web programming
26 downloads per month
Used in openapi-tui
40KB
841 lines
Bootstrap
The idea is to use openapi code generator for rust to generate openapi specification library. To do so, I started with an openapi specification with
{
"openapi": "3.1.0",
"info": {
"version": "3.1.0",
"title": "openapi"
},
"components": {
"schemas": {}
}
}
Build OpenAPI In OpenAPI
- Download json-schema of OpenAPI v3.1
- Copy everything from
schema.$def
into the above OpenAPI json insidecomponents.schemas
- Insert
openapi
definition intocomponents.schemas
- Replace every
#/$defs/
with#/componenst/schemas
- Remove every
"$ref": "#/$defs/specification-extensions"
. We don't need them now. - Remove every
oneOf
. We will add them later in the generated code.
See the result file here.
Generate Code
npx -y @openapitools/openapi-generator-cli generate -i openapi-in-openapi.json -g rust -o /tmp/openapi && mv /tmp/openapi/src/models .
Implement The Remaining Part
Generated code is not complete, and don't generate these structs. We will create them by hand :-) .
path-item-or-reference
parameter-or-reference
request-body-or-reference
response-or-reference
callbacks-or-reference
example-or-reference
link-or-reference
header-or-reference
security-scheme-or-reference
Dependencies
~3.5–4.5MB
~85K SLoC