Skip to content

feat: adding axum integration as the server component - #2

Merged
dotkas merged 5 commits into
mainfrom
dotkas/axum-server-generator
Jun 25, 2026
Merged

feat: adding axum integration as the server component#2
dotkas merged 5 commits into
mainfrom
dotkas/axum-server-generator

Conversation

@dotkas

@dotkas dotkas commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds an initial Axum-based server interface generator (generate.std-http-server) to oapi-codegen-rust, expanding the pipeline to lower OpenAPI paths/operations into a new server IR and then emit an axum router + trait-based handler contract. It also updates tests and documentation to cover and validate the new generator output.

Changes:

  • Add server-path lowering (paths.rs) and IR types (Service/Operation/etc.) to generate an Axum Api trait, response enums, router, and handlers.
  • Extend emit layer to render both models and server interface, and update CLI/lib entrypoints to generate based on config.
  • Rename/refresh “golden” workflow to “generated” outputs and add fixtures/tests for supported + deliberately-unsupported server features.

Reviewed changes

Copilot reviewed 16 out of 37 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Documents std-http-server and the supported/unsupported server-generation slice.
Makefile Renames the refresh target/env var to update-generated / UPDATE_GENERATED.
crates/oapi-codegen/Cargo.toml Adds http dependency and axum dev-dependency for compile-checking generated server output.
Cargo.lock Updates lockfile for newly added dependencies (axum, http, and transitive deps).
crates/oapi-codegen/src/config.rs Updates config docs to reflect implemented Axum server interface generation.
crates/oapi-codegen/src/error.rs Adds UnsupportedOperation error variant for server-generator limitations.
crates/oapi-codegen/src/ir.rs Introduces server IR types (Service, Operation, Param, ResponseCase).
crates/oapi-codegen/src/loader.rs Exposes Spec::paths() for server lowering.
crates/oapi-codegen/src/lib.rs Adds generate / generate_to_file supporting models + server emission based on config.
crates/oapi-codegen/src/main.rs Switches CLI to config-driven generation (models and/or server) and uses new lib API.
crates/oapi-codegen/src/schema.rs Exposes scalar format mapping helpers for reuse by server lowering.
crates/oapi-codegen/src/paths.rs New: lowers OpenAPI paths/operations into server IR (path params, JSON bodies, explicit-status responses).
crates/oapi-codegen/src/emit.rs Adds emission of server interface items (trait, response enums, router, handlers) and shared rendering pipeline.
crates/oapi-codegen/tests/coverage.rs Updates coverage harness to track “generated” outputs and adds server fixture validation (success + rejection).
crates/oapi-codegen/tests/generated_compiles.rs Compile-checks generated outputs (models + server) and adds a small server type-check test.
crates/oapi-codegen/tests/fixtures/server_petstore.yaml New fixture for supported server generation.
crates/oapi-codegen/tests/fixtures/server_unsupported_default_response.yaml New fixture asserting rejection of unsupported default responses.
crates/oapi-codegen/tests/generated/allof_merge.rs New committed generated output for allOf merge fixture.
crates/oapi-codegen/tests/generated/anyof_untagged.rs New committed generated output for anyOf untagged fixture.
crates/oapi-codegen/tests/generated/array_types.rs New committed generated output for array typing fixture.
crates/oapi-codegen/tests/generated/ext_x_rust_type.rs New committed generated output for x-rust-type fixture.
crates/oapi-codegen/tests/generated/freeform_any.rs New committed generated output for free-form schema fixture.
crates/oapi-codegen/tests/generated/integer_formats.rs New committed generated output for integer format mapping fixture.
crates/oapi-codegen/tests/generated/map_alias.rs New committed generated output for map alias fixture.
crates/oapi-codegen/tests/generated/metadata_docs.rs New committed generated output for doc comment emission fixture.
crates/oapi-codegen/tests/generated/nullable.rs New committed generated output for nullable-to-Option fixture.
crates/oapi-codegen/tests/generated/number_formats.rs New committed generated output for number format mapping fixture.
crates/oapi-codegen/tests/generated/object_additional_properties.rs New committed generated output for additionalProperties fixture.
crates/oapi-codegen/tests/generated/object_nested_inline.rs New committed generated output for nested inline object hoisting fixture.
crates/oapi-codegen/tests/generated/object_optional_required.rs New committed generated output for required vs optional field fixture.
crates/oapi-codegen/tests/generated/oneof_discriminator.rs New committed generated output for discriminator + untagged enum fixture.
crates/oapi-codegen/tests/generated/oneof_untagged.rs New committed generated output for oneOf untagged enum fixture.
crates/oapi-codegen/tests/generated/primitive_scalars.rs New committed generated output for primitive scalar mapping fixture.
crates/oapi-codegen/tests/generated/ref_local.rs New committed generated output for local $ref fixture.
crates/oapi-codegen/tests/generated/server_petstore.rs New committed generated server+models output for server petstore fixture.
crates/oapi-codegen/tests/generated/string_enum.rs New committed generated output for string-enum fixture.
crates/oapi-codegen/tests/generated/string_formats.rs New committed generated output for string format mapping fixture.

Comment thread crates/oapi-codegen/src/paths.rs
Comment thread crates/oapi-codegen/src/emit.rs
Comment thread README.md Outdated
Comment thread crates/oapi-codegen/src/paths.rs Outdated
@dotkas
dotkas merged commit 43b8b94 into main Jun 25, 2026
5 checks passed
@dotkas
dotkas deleted the dotkas/axum-server-generator branch June 25, 2026 11:28
@dotkas dotkas removed the released label Jul 16, 2026
@alchemaxinc alchemaxinc deleted a comment from alchemax-housekeeper Bot Jul 16, 2026
@alchemax-housekeeper

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.0.0-dev.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@alchemax-housekeeper

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.0.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants