Skip to main content
Published
Nov 27, 2023
2y ago
Total Downloads
11.7K
11,703

Install

dotnet add package Microsoft.Restier.AspNetCore.Swagger --version 1.1.0-rc.2.20231127.0
ProductVersions
.NET
net6.0net7.0net8.0

README

Microsoft Restier - OData Made Simple

Releases   |   Documentation   |   OData v4.01 Documentation

Swagger for Restier ASP.NET Core

This package helps you quickly implement OpenAPI's Swagger.json and Swagger UI in your Restier service in just a few lines of code.

Supported Platforms

Microsoft.Restier.AspNetCore.Swagger 1.1 currently supports the following platforms:

  • ASP.NET Core 6.0, 7.0, and 8.0 via Endpoint Routing

Getting Started

Building OpenAPI into your Restier project is easy!

Step 1: Install Microsoft.Restier.AspNetCore.Swagger

  • Add the package above to your API project.
  • [Optional] Change the version of your Restier packages to 1.*-* so you always get the latest version.

Step 2: Convert to Endpoint Routing (Part 1)

  • Add the new parameter to the end of your services.AddRestier() call:
    services.AddRestier((builder) =>
    {
        ...
    }, true); // <-- @robertmclaws: This parameter adds Endpoint Routing support.

Step 3: Register Swagger Services

  • Add the line below immediately after the services.AddRestier() call:
services.AddRestierSwagger();
  • There is an overload to this method that takes an Action<OpenApiConvertSettings> that will let you change the configuration of the generated Swagger definition.

Step 4: Convert to Endpoint Routing & Use Swagger (Part 2)

  • Replace your existing Configure code with the following (don't forget your customizations):
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRestierBatching();
        app.UseRouting();

        app.UseAuthorization();
        // @robertmclaws: This line is optional but helps with leveraging ClaimsPrincipal.Current for cross-platform business logic.
        app.UseClaimsPrincipals();

        app.UseEndpoints(endpoints =>
        {
            endpoints.Select().Expand().Filter().OrderBy().MaxTop(100).Count().SetTimeZoneInfo(TimeZoneInfo.Utc);
            endpoints.MapRestier(builder =>
            {
                builder.MapApiRoute<YOURAPITYPEHERE>("ROUTENAME", "ROUTEPREFIX", true);
            });
        });

        app.UseRestierSwagger(true);
    }
  • On the last line, the boolean specifies whether or not to use SwaggerUI. If you want to control more of the UI configuration, use services.Configure<SwaggerUIOptions>(); in your ConfigureServices() method.

Step 5: Browse Swagger Resources

  • Browse to /swagger/ROUTENAME/swagger.json to see the generated Swagger definition.
  • Browse to /swagger to see the Swagger UI.

Reporting Security Issues

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) [email protected]. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter. You can also find these instructions in this repo's SECURITY.md.

Contributors

Special thanks to everyone involved in making Restier the best API development platform for .NET. The following people have made various contributions to this package:

External
Cengiz Ilerler
Robert McLaws
Micah Rairdon

Changes from Previous Version

No structural changes between v1.1.0-rc.2.20231126.1 and v1.1.0-rc.2.20231127.0.

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

This version is marked prerelease. Validate its API and upgrade path before production use.Compatibility metadata lists 3 target frameworks; confirm the exact target used by your application.The published metadata declares 15 direct dependency entries across framework groups. Inspect the resolved dependency graph for your target framework.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.