ASP.NET Core 6.0 - как использовать JsonPatch в минимальных API?

я понимаю JsonPatchв https://docs.microsoft.com/en-us/aspnet/core/web-api/jsonpatch?view=aspnetcore-6.0, но это для MVC. Когда я делаю это в таких кодах, как:

Program.cs

      WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<JsonOptions>(opt =>
{
    opt.SerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    opt.SerializerOptions.Converters.Add(new DecimalJsonConverter());
});
builder.Services.AddControllersWithViews().AddNewtonsoftJson();
...

PlayerModule.cs

      public class PlayerModule : ICarterModule
{
  public override void AddRoutes(IEndpointRouteBuilder app)
  {
    app.MapMethods("/api/portal/player/{id}", new string[] { "PATCH" }, PatchPlayer);
  }
}
...
[HttpPatch]
private async Task<IResult> PatchPlayer(int id, [FromBody] JsonPatchDocument<PlayerSchema> data) {
  ... // The data is always empty
}

где PlayerSchema является:

      public class PlayerSchema {
  public int ID { get; set; }
  public string Password { get; set; }
  public string EMail { get; set; }
  ... and other properties
}

И я звоню PATCH /api/portal/player/1 с телом:

      {
  "eMail": "something@some.net"
}

И JsonPatchDocument всегда пусто (не null, просто Count = 0).

Какова минимальная альтернатива API для этой функции или она должна работать так же, как MVC?

0 ответов

Другие вопросы по тегам