学无先后达者为师!
不忘初心,砥砺前行。

ASP.NET Core 将请求的原始文本绑定到字符串

在使用 Postman 发送 HTTP 请求时,有一种请求类型支持 raw 格式,直接输入要发送到服务端的文本:

服务端如果想要读取这个输入,一个简单的方法是对 Request.Body 这个数据流进行读取。

和之前的博文《ASP.NET Core 将请求的原始 JSON 绑定到字符串》类似,通过创建一个自定义格式化器的方式就可以将这个功能进行封装,实现参数绑定。

using Microsoft.AspNetCore.Mvc.Formatters;
using Microsoft.Net.Http.Headers;
using System.Text;

public class StringInputFormatter : TextInputFormatter
{
    public StringInputFormatter()
    {
        SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/plain"));

        SupportedEncodings.Add(Encoding.UTF8);
        SupportedEncodings.Add(Encoding.Unicode);
    }

    public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context, Encoding effectiveEncoding)
    {
        var request = context.HttpContext.Request;
        using (var reader = new StreamReader(request.Body, effectiveEncoding))
        {
            var stringContent = await reader.ReadToEndAsync();
            return await InputFormatterResult.SuccessAsync(stringContent);
        }
    }
}

配置 MvcOptions :

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers(options =>
{
    options.InputFormatters.Insert(0, new StringInputFormatter());
});

使用方法如下:

[HttpPost]
public IActionResult Post([FromBody]string html)
{
}
赞(0) 打赏
未经允许不得转载:码农很忙 » ASP.NET Core 将请求的原始文本绑定到字符串

评论 抢沙发

给作者买杯咖啡

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册