Add Swagger configuration details

This commit is contained in:
Marcello 2021-09-16 20:06:17 +02:00
parent a904e44e95
commit 65e8b72679

View file

@ -28,6 +28,12 @@ builder.Services.AddSwaggerGen();
app.UseSwagger(); app.UseSwagger();
app.UseSwaggerUI(); app.UseSwaggerUI();
// add returned content metadata to Swagger
app.MapGet("/route", Handler).Produces<Type>(statusCode);
// add request body contents metadata to Swagger
app.MapPost("/route", Handler).Accepts<Type>(contentType);
``` ```
## MVC ## MVC
@ -97,7 +103,7 @@ app.MapGet("/hello", (ClaimsPrincipal user) => {
## Validation ## Validation
Using [Minimal Validation](https://github.com/DamianEdwards/MinimalValidation) by Damian Edwards. Using [Minimal Validation](https://github.com/DamianEdwards/MinimalValidation) by Damian Edwards.
Alternativeli it's possible to use [Fluent Validation](https://fluentvalidation.net/). Alternatively it's possible to use [Fluent Validation](https://fluentvalidation.net/).
```cs ```cs
app.MapPost("/widgets", (Widget widget) => { app.MapPost("/widgets", (Widget widget) => {
@ -133,14 +139,13 @@ builder.Services.Configure<JsonOptions>(opt =>
## Authorization ## Authorization
```cs ```cs
builder.Services builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer();
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();
builder.Services.AddAuthorization(); builder.Services.AddAuthorization();
// or // or
builder.Services.AddAuthorization(options => builder.Services.AddAuthorization(options =>
{ {
// for all endpoints
options.FallbackPolicy = new AuthorizationPolicyBuilder() options.FallbackPolicy = new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser(); .RequireAuthenticatedUser();
@ -153,6 +158,6 @@ app.UseAuthorization(); // must come before routes
// [...] // [...]
app.MapGet("/alcohol", () => Results.Ok()).RequireAuthorization("<policy>"); app.MapGet("/alcohol", () => Results.Ok()).RequireAuthorization("<policy>"); // on specific endpoints
app.MapGet("/free-for-all", () => Results.Ok()).AllowAnonymous(); app.MapGet("/free-for-all", () => Results.Ok()).AllowAnonymous();
``` ```