TypedRest.CodeGeneration
0.2.0
dotnet add package TypedRest.CodeGeneration --version 0.2.0
NuGet\Install-Package TypedRest.CodeGeneration -Version 0.2.0
<PackageReference Include="TypedRest.CodeGeneration" Version="0.2.0" />
<PackageVersion Include="TypedRest.CodeGeneration" Version="0.2.0" />
<PackageReference Include="TypedRest.CodeGeneration" />
paket add TypedRest.CodeGeneration --version 0.2.0
#r "nuget: TypedRest.CodeGeneration, 0.2.0"
#:package TypedRest.CodeGeneration@0.2.0
#addin nuget:?package=TypedRest.CodeGeneration&version=0.2.0
#tool nuget:?package=TypedRest.CodeGeneration&version=0.2.0
Code Generation
Parses OpenAPI/Swagger documents and infers TypedRest Endpoints from patterns in the described paths.
dotnet add package TypedRest.CodeGeneration
This library only models the endpoints. To turn them into source code, combine it with:
Usage
Register the x-typedrest extension parser when reading a document, then either read the endpoints the document already describes or infer them from its paths:
var reader = new OpenApiStreamReader(new OpenApiReaderSettings().AddTypedRest());
var doc = reader.Read(File.OpenRead("myapi.yml"), out _);
EntryEndpoint endpoints = doc.GetTypedRest() ?? doc.MatchTypedRestPatterns();
MatchTypedRestPatterns() arranges the paths into a tree and matches each node against the patterns in PatternRegistry.Default. Write the result back into the document with doc.SetTypedRest(endpoints) to persist or hand-edit it.
Matching is deliberately conservative: a pattern only claims a path when the endpoint it produces is an accurate description of it. ElementPattern, for instance, models a single type that is both read and written, so it declines paths whose PUT/PATCH takes a different schema than the GET returns, rather than generating an endpoint that would send the wrong request body. Those paths fall through to a plain endpoint that still exposes its children, leaving the operations to be written by hand.
Extension points
Implement IPattern and add it to a PatternRegistry to recognize path shapes of your own:
var patterns = PatternRegistry.Default.Add(new MyPattern());
var endpoints = doc.MatchTypedRestPatterns(patterns);
Patterns added later take precedence; the first one that matches a node wins.
Implement IEndpoint and add it to an EndpointRegistry to introduce a new endpoint kind, then pass the registry to AddTypedRest() so that x-typedrest extensions using that kind can be parsed.
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.OpenApi.Readers (>= 1.6.29)
-
net10.0
- Microsoft.OpenApi.Readers (>= 1.6.29)
-
net8.0
- Microsoft.OpenApi.Readers (>= 1.6.29)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on TypedRest.CodeGeneration:
| Package | Downloads |
|---|---|
|
TypedRest.CodeGeneration.CSharp
Generates C# source code for TypedRest .NET clients from OpenAPI/Swagger documents. |
|
|
TypedRest.CodeGeneration.TypeScript
Generates TypeScript source code for TypedRest clients from OpenAPI/Swagger documents. |
GitHub repositories
This package is not used by any popular GitHub repositories.