Comments (4)
I am aware that middleware could respond in a way that is undocumented, however that was already the case with whatever middleware is placed in front of the single route builder (for instance the request injection middleware could respond with an undocumented response if it pleased).
from swift-openapi-generator.
If I understood your ask correctly, you can already achieve this by putting each document into a separate Swift module, and then having your executable attach the generated routes from both OpenAPI docs to the same server.
That would allow you to do exactly this, with two extra imports:
import Admin
import Public
let requestAttached = app.grouped(OpenAPIRequestInjectionMiddleware())
let adminTransport = VaporTransport(routesBuilder: requestAttached.grouped(AdminMiddleware()))
let publicTransport = VaporTransport(routesBuilder: requestAttached)
let adminHandler = AdminAPIProtocolImpl()
let publicHandler = PublicAPIProtocolImpl()
try adminHandler.registerHandlers(on: adminTransport, serverURL: Servers.server1())
try publicHandler.registerHandlers(on: publicTransport, serverURL: Servers.server1())
try await app.execute()
from swift-openapi-generator.
Thanks for the workaround. Are there any plans to more cleanly support middleware, possibly by allowing the middleware to be documented and have their responses enforced by some sort of protocol as well?
from swift-openapi-generator.
Middlewares are a concept of the runtime library, which is shared by all adopters with their OpenAPI docs.
Maybe there could be a concept of a project-specific middleware, but we haven't done any thinking around this area.
Ideas and proposals are always welcome 🙂
from swift-openapi-generator.
Related Issues (20)
- Issue Enabling OpenAPIGenerator Plugin for Xcode Cloud Build HOT 1
- More config options, including pointing to spec file location HOT 5
- Expose internal symbols HOT 4
- Questions re: anyOf/allOf/oneOf, and one more thing HOT 5
- Swift tools version 5.9.2 but the installed version is 5.9.0 HOT 4
- Parsing ISO8601 date time from server fails due to milliseconds HOT 2
- How to send a file in multipart/form-data? HOT 3
- Convert the repsonse to an array of structs HOT 8
- Streamlining Use HOT 10
- Re-enable strict concurrency checking for swift-openapi-urlsession
- How to throw errors that won't get transformed to ServerError? HOT 9
- Equatable conformance HOT 2
- Support `$dynamicAnchor` and `$dynamicRef` HOT 19
- Generated enums should conform to `CaseIterable` HOT 7
- Is it possible to use component refs in paths that accept multiple content types? HOT 8
- Multipart content not properly generated? HOT 11
- Manual invocation of the generator and SPM warnings HOT 5
- Null property type with quotes not generated HOT 14
- Support for XML request body and response body HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swift-openapi-generator.