public sealed class PlainTextInputFormatter : TextInputFormatter { public PlainTextInputFormatter() { // 堆代码 duidaima.com SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/plain")); SupportedEncodings.Add(Encoding.UTF8); SupportedEncodings.Add(Encoding.Unicode); } public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context, Encoding encoding) { using var reader = context.ReaderFactory(context.HttpContext.Request.Body, encoding); var rawContent = await reader.ReadToEndAsync(); return await InputFormatterResult.SuccessAsync(rawContent); } }例子
builder.Services.AddControllers(options => { options.InputFormatters.Add(new PlainTextInputFormatter()); });这样我们的应用就支持了 plain text 的 request body 了,再来看下我们的 API 示例:
[HttpPost("RawTextFormatterTest")] [Consumes("text/plain")] public Result RawTextFormatterTest([FromBody] string input) { return Result.Success<string>(input); }通过指定 [Consumes("text/plain")] 来指定 API 支持的 media type 为 text/plain。