Contents

hummingbird-project/swift-openapi-hummingbird

Hummingbird transport for [OpenAPI generator](https://github.com/apple/swift-openapi-generator).

RequestContext

It is a common requirement that the router RequestContext is used in OpenAPI endpoints. You can do this by adding a middleware that stores your RequestContext type in a TaskLocal.

struct RequestContextMiddleware: RouterMiddleware {
    typealias Context = MyRequestContext
    @TaskLocal static var requestContext: Context?

    func handle(_ request: Request, context: Context, next: (Request, Context) async throws -> Response) async throws -> Response {
        try await Self.$requestContext.withValue(context) {
            try await next(request, context)
        }
    }
}

If you add a version of this middleware, replacing MyRequestContext with your own RequestContext type, to the end of your router middleware chain then it will be available from your OpenAPI endpoints via RequestContextMiddleware.requestContext.

Documentation

To get started, check out the full [documentation][docs-generator], which contains step-by-step tutorials!

[docs-generator]: https://swiftpackageindex.com/apple/swift-openapi-generator/documentation

Package Metadata

Repository: hummingbird-project/swift-openapi-hummingbird

Default branch: main

README: README.md