values swagger
This commit is contained in:
@@ -198,12 +198,18 @@ builder.Services.AddSwaggerGen(c =>
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
c.SchemaFilter<AddExampleSchemaFilter>();
|
||||||
c.OperationFilter<AuthorizeOperationFilter>();
|
c.OperationFilter<AuthorizeOperationFilter>();
|
||||||
|
|
||||||
|
// Endpunktspezifische Beispiele
|
||||||
c.OperationFilter<LoginExampleOperationFilter>();
|
c.OperationFilter<LoginExampleOperationFilter>();
|
||||||
c.OperationFilter<PaymentMethodExampleOperationFilter>();
|
c.OperationFilter<PaymentMethodExampleOperationFilter>();
|
||||||
c.OperationFilter<SupplierExampleOperationFilter>();
|
c.OperationFilter<SupplierExampleOperationFilter>();
|
||||||
c.OperationFilter<ShippingMethodExampleOperationFilter>();
|
c.OperationFilter<ShippingMethodExampleOperationFilter>();
|
||||||
c.SchemaFilter<AddExampleSchemaFilter>();
|
c.OperationFilter<AdminCategoryExampleOperationFilter>();
|
||||||
|
c.OperationFilter<AdminProductExampleOperationFilter>();
|
||||||
|
c.OperationFilter<CustomerAddressExampleOperationFilter>();
|
||||||
|
c.OperationFilter<CustomerOrderExampleOperationFilter>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
// src/Webshop.Api/SwaggerFilters/AdminCategoryExampleOperationFilter.cs
|
||||||
|
using Microsoft.OpenApi.Models;
|
||||||
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||||
|
using Microsoft.OpenApi.Any;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Webshop.Api.SwaggerFilters
|
||||||
|
{
|
||||||
|
public class AdminCategoryExampleOperationFilter : IOperationFilter
|
||||||
|
{
|
||||||
|
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||||||
|
{
|
||||||
|
if (context.MethodInfo.DeclaringType == typeof(Controllers.Admin.AdminCategoriesController) &&
|
||||||
|
context.MethodInfo.Name == "CreateCategory")
|
||||||
|
{
|
||||||
|
if (operation.RequestBody == null ||
|
||||||
|
!operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mediaType.Examples == null)
|
||||||
|
{
|
||||||
|
mediaType.Examples = new Dictionary<string, OpenApiExample>();
|
||||||
|
}
|
||||||
|
mediaType.Examples.Clear();
|
||||||
|
|
||||||
|
mediaType.Examples["Hauptkategorie"] = new OpenApiExample
|
||||||
|
{
|
||||||
|
Summary = "Beispiel: Hauptkategorie",
|
||||||
|
Value = new OpenApiObject
|
||||||
|
{
|
||||||
|
["name"] = new OpenApiString("Elektronik"),
|
||||||
|
["slug"] = new OpenApiString("elektronik"),
|
||||||
|
["description"] = new OpenApiString("Alles rund um elektronische Geräte."),
|
||||||
|
["parentCategoryId"] = new OpenApiNull(),
|
||||||
|
["isActive"] = new OpenApiBoolean(true),
|
||||||
|
["displayOrder"] = new OpenApiInteger(1)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mediaType.Examples["Unterkategorie"] = new OpenApiExample
|
||||||
|
{
|
||||||
|
Summary = "Beispiel: Unterkategorie",
|
||||||
|
Value = new OpenApiObject
|
||||||
|
{
|
||||||
|
["name"] = new OpenApiString("Smartphones"),
|
||||||
|
["slug"] = new OpenApiString("smartphones"),
|
||||||
|
["description"] = new OpenApiString("Mobile Endgeräte."),
|
||||||
|
["parentCategoryId"] = new OpenApiString("EXISTING_CATEGORY_ID_HERE"),
|
||||||
|
["isActive"] = new OpenApiBoolean(true),
|
||||||
|
["displayOrder"] = new OpenApiInteger(1)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
// src/Webshop.Api/SwaggerFilters/AdminProductExampleOperationFilter.cs
|
||||||
|
using Microsoft.OpenApi.Models;
|
||||||
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||||
|
using Microsoft.OpenApi.Any;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Webshop.Api.SwaggerFilters
|
||||||
|
{
|
||||||
|
public class AdminProductExampleOperationFilter : IOperationFilter
|
||||||
|
{
|
||||||
|
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||||||
|
{
|
||||||
|
if (context.MethodInfo.DeclaringType == typeof(Controllers.Admin.AdminProductsController) &&
|
||||||
|
context.MethodInfo.Name == "CreateAdminProduct")
|
||||||
|
{
|
||||||
|
if (operation.RequestBody == null ||
|
||||||
|
!operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mediaType.Examples == null)
|
||||||
|
{
|
||||||
|
mediaType.Examples = new Dictionary<string, OpenApiExample>();
|
||||||
|
}
|
||||||
|
mediaType.Examples.Clear();
|
||||||
|
|
||||||
|
var uniqueId = Guid.NewGuid().ToString().Substring(0, 8);
|
||||||
|
|
||||||
|
mediaType.Examples["Standard"] = new OpenApiExample
|
||||||
|
{
|
||||||
|
Summary = "Beispiel: Standardprodukt",
|
||||||
|
Value = new OpenApiObject
|
||||||
|
{
|
||||||
|
["name"] = new OpenApiString($"Neues Produkt {uniqueId}"),
|
||||||
|
["description"] = new OpenApiString("Detaillierte Beschreibung des neuen Produkts."),
|
||||||
|
["sku"] = new OpenApiString($"SKU-{uniqueId}"),
|
||||||
|
["price"] = new OpenApiDouble(99.99),
|
||||||
|
["isActive"] = new OpenApiBoolean(true),
|
||||||
|
["isInStock"] = new OpenApiBoolean(true),
|
||||||
|
["stockQuantity"] = new OpenApiInteger(100),
|
||||||
|
["slug"] = new OpenApiString($"neues-produkt-{uniqueId}"),
|
||||||
|
["categoryIds"] = new OpenApiArray { new OpenApiString("EXISTING_CATEGORY_ID_HERE") }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
// src/Webshop.Api/SwaggerFilters/CustomerAddressExampleOperationFilter.cs
|
||||||
|
using Microsoft.OpenApi.Models;
|
||||||
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||||
|
using Microsoft.OpenApi.Any;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Webshop.Domain.Enums;
|
||||||
|
|
||||||
|
namespace Webshop.Api.SwaggerFilters
|
||||||
|
{
|
||||||
|
public class CustomerAddressExampleOperationFilter : IOperationFilter
|
||||||
|
{
|
||||||
|
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||||||
|
{
|
||||||
|
if (context.MethodInfo.DeclaringType == typeof(Controllers.Customer.AddressesController) &&
|
||||||
|
context.MethodInfo.Name == "CreateAddress")
|
||||||
|
{
|
||||||
|
if (operation.RequestBody == null ||
|
||||||
|
!operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mediaType.Examples == null)
|
||||||
|
{
|
||||||
|
mediaType.Examples = new Dictionary<string, OpenApiExample>();
|
||||||
|
}
|
||||||
|
mediaType.Examples.Clear();
|
||||||
|
|
||||||
|
mediaType.Examples["Lieferadresse"] = new OpenApiExample
|
||||||
|
{
|
||||||
|
Summary = "Beispiel: Lieferadresse",
|
||||||
|
Value = new OpenApiObject
|
||||||
|
{
|
||||||
|
["street"] = new OpenApiString("Musterweg"),
|
||||||
|
["houseNumber"] = new OpenApiString("1a"),
|
||||||
|
["city"] = new OpenApiString("Musterstadt"),
|
||||||
|
["postalCode"] = new OpenApiString("12345"),
|
||||||
|
["country"] = new OpenApiString("Deutschland"),
|
||||||
|
["type"] = new OpenApiString(AddressType.Shipping.ToString())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
// src/Webshop.Api/SwaggerFilters/CustomerOrderExampleOperationFilter.cs
|
||||||
|
using Microsoft.OpenApi.Models;
|
||||||
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||||
|
using Microsoft.OpenApi.Any;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Webshop.Api.SwaggerFilters
|
||||||
|
{
|
||||||
|
public class CustomerOrderExampleOperationFilter : IOperationFilter
|
||||||
|
{
|
||||||
|
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
||||||
|
{
|
||||||
|
if (context.MethodInfo.DeclaringType == typeof(Controllers.Customer.OrdersController) &&
|
||||||
|
context.MethodInfo.Name == "CreateOrder")
|
||||||
|
{
|
||||||
|
if (operation.RequestBody == null ||
|
||||||
|
!operation.RequestBody.Content.TryGetValue(MediaTypeNames.Application.Json, out var mediaType))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mediaType.Examples == null)
|
||||||
|
{
|
||||||
|
mediaType.Examples = new Dictionary<string, OpenApiExample>();
|
||||||
|
}
|
||||||
|
mediaType.Examples.Clear();
|
||||||
|
|
||||||
|
mediaType.Examples["Standardbestellung"] = new OpenApiExample
|
||||||
|
{
|
||||||
|
Summary = "Beispiel: Standardbestellung",
|
||||||
|
Value = new OpenApiObject
|
||||||
|
{
|
||||||
|
["shippingAddressId"] = new OpenApiString("EXISTING_ADDRESS_ID_HERE"),
|
||||||
|
["billingAddressId"] = new OpenApiString("EXISTING_ADDRESS_ID_HERE"),
|
||||||
|
["paymentMethodId"] = new OpenApiString("EXISTING_PAYMENT_METHOD_ID_HERE"),
|
||||||
|
["shippingMethodId"] = new OpenApiString("EXISTING_SHIPPING_METHOD_ID_HERE"),
|
||||||
|
["items"] = new OpenApiArray
|
||||||
|
{
|
||||||
|
new OpenApiObject
|
||||||
|
{
|
||||||
|
["productId"] = new OpenApiString("EXISTING_PRODUCT_ID_HERE"),
|
||||||
|
["quantity"] = new OpenApiInteger(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user