Yesterday I talked about a breaking change I had inside my ASP.NET Core web api that caused my application to fail. I had a header parameter that was optional but became required after changing the nullability of my project to enabled
.
My hope was that this would be visible in the OpenAPI metadata for my OpenAPI. Unfortunately, the generated metadata always looked like this:
So both this code:
and this code:
return exactly the same metadata.
The lack of a required
property marks this header as optional, which doesn't reflect the actual behavior of the application after enabling nullability.
I decided to investigate this a little further and found out that it is possible to emit the correct metadata by explicitly adding a [Required] attribute to the parameter:
After adding this attribute the metadata was updated correctly.
It’s unfortunate that ASP.NET Core doesn’t do this by default as it is aware of the possible nullability of the provided parameters.