Reputation: 350
I'm working on a minimal API in .NET Core 6 with OpenApi support.
I have a Resolution model defined like this:
using System.ComponentModel.DataAnnotations;
public struct Resolution
{
[Required, Range(1, 800)]
public int W { get; set; }
[Required, Range(1, 600)]
public int H { get; set; }
}
Then I have a POST endpoint definition like this:
app.MapPut("/resolutions", (Resolution res) =>
{
//Some logic here
return Results.Ok(new { Message = "Resource updated successfully" });
})
.Produces(200)
.Produces(404)
.WithName("PutResolution");
Case 1. I send a PUT request (out of range value fore w):
"resolution": {
"w": 1024,
"h": 400
}
Result: 200 OK.
Case 2: I send a PUT request (wrong data type for w):
"resolution": {
"w": "xl",
"h": 400
}
Result: 400 JsonException
Issue:
Questions:
Upvotes: 3
Views: 1754
Reputation: 350
Solved using NuGet package: MiniValidation (https://www.nuget.org/packages/MiniValidation/) as suggested by @Ruikai. It would still fail on deserialization I can compromise on this.
Usage:
static async Task<IResult> PutImage(string id, Image image)
{
if(!MiniValidator.TryValidate(image, out var errors))
{
return Results.ValidationProblem(errors);
}
}
Upvotes: 0
Reputation: 11896
As mentioned in this document,There's no built-in support for validation in .NET 6 Minimal API.
If you do want it, you could try third party solutions such as this blog.
Upvotes: 1