Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.NET Core 6 minimal API with OpenApi - validate request against OpenApi schema

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:

  • relying on JsonException on deserialization. Preferably a schema validation error should be returned to consumer.

Questions:

  1. What is the best practice to handle validation in this case?
  2. Is there a way to validate incoming request against the OpenApi contract, which in this case, is generated on the fly? In this case both wrong data type and value out of range issues would be validated before entering the route handler.
like image 823
Fuczak Avatar asked May 28 '26 19:05

Fuczak


1 Answers

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.

like image 81
Ruikai Feng Avatar answered May 31 '26 10:05

Ruikai Feng



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!