.NET 8 Minimal API如何配置以接受Content-Type为text/json的请求?
.NET 8 Minimal API如何配置以接受Content-Type为text/json的请求?
嘿,这个问题我之前碰到过,处理起来挺简单的——默认情况下.NET的JSON输入格式化器只认application/json,所以当请求头是text/json时,服务器就会返回415错误。我们只需要给格式化器新增对text/json的支持就行,全局配置一次就能搞定所有端点。
直接在你的Program.cs里加上这段配置:
var builder = WebApplication.CreateBuilder(args); // 重点:配置JSON格式化器支持text/json媒体类型 builder.Services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(options => { var textJsonMediaType = new Microsoft.Net.Http.Headers.MediaTypeHeaderValue("text/json"); // 找到默认的SystemTextJson输入格式化器 var jsonInputFormatter = options.InputFormatters.OfType<SystemTextJsonInputFormatter>().FirstOrDefault(); if (jsonInputFormatter != null) { // 添加text/json到支持的媒体类型列表 jsonInputFormatter.SupportedMediaTypes.Add(textJsonMediaType); } }); // 剩下的是你原本的配置,比如Swagger、端点定义等 builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); // 示例端点,测试用 app.MapPost("/api/echo", (YourRequestModel model) => { return Results.Ok(model); }) .WithName("EchoRequest") .WithOpenApi(); app.Run(); // 示例请求模型,根据你的实际业务替换 public record YourRequestModel(string Message, int Id);
配置完成后,你的Minimal API就能同时处理Content-Type: application/json和Content-Type: text/json的请求了。如果之后需要支持其他类似的JSON媒体类型(比如text/javascript),用同样的方法添加对应的MediaTypeHeaderValue就行。
备注:内容来源于stack exchange,提问作者MRP
相关产品推荐
相关产品推荐

