Repository navigation
Add Builder to simplify openapi document object construction #673
Description
Activity
Agreed, building it is clunky. Would you mind starting a discussion thread on ways that we could improve construction?
Reacted by gparmigianiI very nice project i saw in the F# space is this one (it uses F# Computation Expressions CEs for the builder pattern), but probably with extension methods something much similar can be obtained.. (or maybe also the F# part could be included in the "official one" for the F# api)
https://github.com/akhansari/FSharp.OpenApi
let document = apiDocument { info (apiInfo { version "1.0.0" title "Swagger Petstore (Simple)" }) servers [ apiServer { url "http://petstore.swagger.io/api" } ] paths [ "/pets", apiPathItem { operations [ OperationType.Get, apiOperation { description "Returns all pets from the system that the user has access to" responses [ HttpStatusCode.OK, apiResponse { description "OK" } ] } ] } ] } let outputString = document.Serialize (OpenApiSpecVersion.OpenApi3_0, OpenApiFormat.Json)
i guess the C# counterpart would be like
var document = OpenApi.Builder() .WithInfo(....) .WithServers(...) .WithPaths(...) .Build(); var openApiJsonV3String = document.Serialize (OpenApiSpecVersion.OpenApi3_0, OpenApiFormat.Json);
- addedtype:enhancementEnhancement request targeting an existing experienceEnhancement request targeting an existing experience
on Mar 1, 2022 captainsafia commented
on Sep 26, 2022 ContributorMore actionsI came across this issue while drafting a proposal for a new API in ASP.NET Core that builds on top of Microsoft.OpenAPI (see dotnet/aspnetcore#44192).
IMO, it would be really neat to have a builder-style pattern for an OpenAPI document.
- addedstatus:needs-discussionAn issue that requires more discussion internally before resolvingAn issue that requires more discussion internally before resolving
on Apr 3, 2023 - added and removedstatus:needs-discussionAn issue that requires more discussion internally before resolvingAn issue that requires more discussion internally before resolving
on Apr 29, 2025 If someone wants to prototype a builder object, they are welcome to create a PR.
A regular C# builder pattern would help a lot in many scenarios.
Building an object now is very complex...
Builder pattern is also the "de facto" in Aspnetcore.. so would make sense to expose a similar api