From 98de6f685b1525a4446a124031979a3dbc6230dd Mon Sep 17 00:00:00 2001 From: SeungYongShim Date: Sat, 17 Feb 2024 15:05:13 +0900 Subject: [PATCH] . --- .../Dto/MessageDto.cs | 21 +++++++++++ src/WebApplicationMinimalApi8/Program.cs | 35 +++++++++++++++++-- .../WebApplicationMinimalApi8.csproj | 3 ++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/WebApplicationMinimalApi8/Dto/MessageDto.cs diff --git a/src/WebApplicationMinimalApi8/Dto/MessageDto.cs b/src/WebApplicationMinimalApi8/Dto/MessageDto.cs new file mode 100644 index 0000000..478e0d2 --- /dev/null +++ b/src/WebApplicationMinimalApi8/Dto/MessageDto.cs @@ -0,0 +1,21 @@ +using FluentValidation; + +namespace WebApplicationMinimalApi8.Dto; + +public record MessageDto +{ + /// + /// + /// + /// 안녕하세요 + public required string Body { get; init; } + +} + +public class MessageDtoValidator : AbstractValidator +{ + public MessageDtoValidator() + { + RuleFor(x => x.Body).NotEmpty(); + } +} diff --git a/src/WebApplicationMinimalApi8/Program.cs b/src/WebApplicationMinimalApi8/Program.cs index 4907169..afa17ad 100644 --- a/src/WebApplicationMinimalApi8/Program.cs +++ b/src/WebApplicationMinimalApi8/Program.cs @@ -1,10 +1,16 @@ -using Microsoft.Extensions.Hosting; +using System.Reflection.Metadata.Ecma335; +using FluentValidation; +using Microsoft.OpenApi.Models; +using WebApplicationMinimalApi8.Dto; using WebApplicationMinimalApi8.ExceptionHandlers; var builder = WebApplication.CreateBuilder(args); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); +builder.Services.AddValidatorsFromAssemblyContaining(); +builder.AddFluentValidationEndpointFilter(); + if (builder.Environment.IsEnvironment("Best")) { builder.Services.AddExceptionHandler(); @@ -21,7 +27,32 @@ { app.UseExceptionHandler(); } - + +app.MapPost("/validate", (MessageDto message) => message) + .WithDescription("메시지를 검증합니다.") + + .AddFluentValidationFilter() + .WithOpenApi(x => + { + x.RequestBody = new OpenApiRequestBody + { + Content = + { + ["application/json"] = new OpenApiMediaType + { + Schema = new OpenApiSchema + { + Reference = new OpenApiReference + { + Id = "MessageDto", + Type = ReferenceType.Schema + } + } + } + } + }; + return x; + }); app.MapGet("/500", () => { diff --git a/src/WebApplicationMinimalApi8/WebApplicationMinimalApi8.csproj b/src/WebApplicationMinimalApi8/WebApplicationMinimalApi8.csproj index dc27417..a2bd7f3 100644 --- a/src/WebApplicationMinimalApi8/WebApplicationMinimalApi8.csproj +++ b/src/WebApplicationMinimalApi8/WebApplicationMinimalApi8.csproj @@ -7,6 +7,9 @@ + + +