Class YamlSerializationInputFormatter
- Namespace
- Codebelt.Extensions.AspNetCore.Mvc.Formatters.Text.Yaml
- Assembly
- Codebelt.Extensions.AspNetCore.Mvc.Formatters.Text.Yaml.dll
This class handles deserialization of YAML to objects using YamlFormatter.
public class YamlSerializationInputFormatter : StreamInputFormatter<YamlFormatter, YamlFormatterOptions>, IInputFormatter, IApiRequestFormatMetadataProvider, IConfigurable<YamlFormatterOptions>
- Inheritance
-
YamlSerializationInputFormatter
- Implements
- Inherited Members
Examples
The following example shows how to register and verify the YamlSerializationInputFormatter in an ASP.NET Core MVC application that accepts YAML-formatted request bodies and deserializes them to model objects.
using System;
using System.Linq;
using Codebelt.Extensions.AspNetCore.Mvc.Formatters.Text.Yaml;
using Codebelt.Extensions.YamlDotNet.Formatters;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace ExampleNamespace;
public class CreateItemRequest
{
public required string Name { get; set; }
public required string Description { get; set; }
}
[ApiController]
[Route("api/[controller]")]
public class DataController : ControllerBase
{
[HttpPost("item")]
public IActionResult CreateItem([FromBody] CreateItemRequest request)
{
return Ok(new { message = $"Item '{request.Name}' created successfully" });
}
}
class Program
{
static void Main()
{
var builder = WebApplication.CreateBuilder();
// Register YAML formatters - this adds YamlSerializationInputFormatter
builder.Services.AddControllers()
.AddYamlFormatters();
var app = builder.Build();
// Verify the formatter is registered in MVC options
var mvcOptions = app.Services.GetRequiredService<IOptions<MvcOptions>>();
var inputFormatters = mvcOptions.Value.InputFormatters;
var yamlInputFormatter = inputFormatters.OfType<YamlSerializationInputFormatter>().FirstOrDefault();
if (yamlInputFormatter != null)
{
Console.WriteLine($"YamlSerializationInputFormatter registered for types: {string.Join(", ", yamlInputFormatter.SupportedMediaTypes)}");
}
app.MapControllers();
app.Run();
}
}
Constructors
YamlSerializationInputFormatter(YamlFormatterOptions)
Initializes a new instance of the YamlSerializationInputFormatter class.
public YamlSerializationInputFormatter(YamlFormatterOptions options)
Parameters
optionsYamlFormatterOptionsThe YamlFormatterOptions which need to be configured.