Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable usage of Route Groups for client generation #4902

Open
dev-in-disguise opened this issue May 26, 2024 · 1 comment
Open

Enable usage of Route Groups for client generation #4902

dev-in-disguise opened this issue May 26, 2024 · 1 comment

Comments

@dev-in-disguise
Copy link

When using controllers it is possible to use {controller} when setting stuff within the OpenApiProjectReference. We use that in our projects to set <ClassName>{controller}Client</ClassName>.

Since .NET 7 when using minimal apis we can now define so called route groups via app.MapGroup("GroupName") to group several endpoints together. When using this I would now like to have the possibility to define the ClassName in a similar fashion to what {controller} does. So e.g. a {routeGroup} which creates a client per route group.

By the way I'd gladly try to implement a first version if you think this would be a good and necessary addition.

@BalintHarmatAtBetssonGroup

FYI I just needed this as well, and figured out we can hijack the {controller} pattern for it.

You just have to create an IDocumentFilter implementation for your swagger generator, that constructs the operationId parameter for each operation, in the form controller_method. Obviously since you don't have an actual controller class, and methods with minimal apis, you need to sanitize the tags of the operation into a valid class name (the group will show up as a tag on the operation) and divine a method name for it from the info of the operation.

Has lots of possible ugly edge cases around so I can't give a complete example, as didn't have time for it yet, but that is the gist of it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants