SwaggerProvider is an umbrella project for two F# generative Type Providers that generate object models and HTTP clients for APIs described by OpenApi 3.0 and Swagger 2.0 schemas
- OpenApiClientProvider New - uses Microsoft.OpenApi.Readers to parse schema. Support both OpenApi and Swagger schemas, but Swagger support is limited.
- SwaggerClientProvider - uses custom old good Swagger 2.0 schema parser and tested on several hundred schemas available in APIs.guru (Wikipedia for WEB APIs)
Type Providers support schemas in JSON & YAML formats and run on netcoreapp3.1 and net46.
Create new F# script file (for example openapi.fsx) and copy following code
#r "nuget: SwaggerProvider"
open SwaggerProvider
let [<Literal>] Schema = "https://petstore.swagger.io/v2/swagger.json"
type PetStore = OpenApiClientProvider<Schema>
let client = PetStore.Client()
client.GetInventory()
|> Async.AwaitTask
|> Async.RunSynchronouslyCreate new F# netcoreapp3.1 project and add reference to latest SwaggerProvider NuGet package
dotnet new console --name apiclient --language F#
cd apiclient
dotnet add package SwaggerProvider --version 0.10.0replace content of Program.fs file by
open SwaggerProvider
let [<Literal>] Schema = "https://petstore.swagger.io/v2/swagger.json"
type PetStore = OpenApiClientProvider<Schema>
[<EntryPoint>]
let main argv =
let client = PetStore.Client()
client.GetInventory()
|> Async.AwaitTask
|> Async.RunSynchronously
|> printfn "%O"
0build and run the project
dotnet runin the console, you should see printed inventory from the server.
Intellisense works in your favorite IDE.
| Visual Studio Code + Ionide | Rider |
|---|---|
| Visual Studio for Mac | Visual Studio |
|---|---|