Проверка данных веб-API ASP.NET Core 8 игнорирует аннотации данныхC#

Место общения программистов C#
Ответить
Anonymous
 Проверка данных веб-API ASP.NET Core 8 игнорирует аннотации данных

Сообщение Anonymous »

Я пытаюсь заставить автоматическую проверку данных работать в ApiController, но когда пользователь отправляет неправильные/отсутствующие данные, вместо пользовательского сообщения ErrorMessage возвращается сообщение об ошибке десериализации JSON. >
ProfilesController.cs

Код: Выделить всё

using ClassLibrary.Models;
using ClassLibrary.Services;
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
using ClassLibrary.Models.API.Responses.Profiles;
using ClassLibrary.Models.API.Requests;
using Microsoft.AspNetCore.Authorization;

namespace API.Controllers
{
[ApiController]
[Route("v1/[controller]")]
public class ProfilesController : Controller
{
private IProfileManager _profileManager;

public ProfilesController(IProfileManager profileManager)
{
_profileManager = profileManager;
}

[Authorize]
[HttpPatch("about")]
public async Task UpdateAbout([FromBody] UpdateAboutPayload payload)
{
await _profileManager.UpdateAboutAsync(payload.About);

return Ok();
}
}
}
UpdateAboutPayload.cs

Код: Выделить всё

using System.ComponentModel.DataAnnotations;

namespace ClassLibrary.Models.API.Requests
{
public class UpdateAboutPayload
{
[Required(ErrorMessage = "About is required")]
[StringLength(500, ErrorMessage = "About must be between 0 and 500 characters long")]
public required string About { get; set; }
}
}
Когда я отправляю следующие данные Я получаю эту ошибку

Код: Выделить всё

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"$": [
"JSON deserialization for type 'ClassLibrary.Models.API.Requests.UpdateAboutPayload' was missing required properties, including the following: about"
],
"payload": [
"The payload field is required."
]
},
"traceId": "00-402c938fa2cb172de6a89b521f8fcae1-88ebfe9d6c674e35-00"
}
вместо сообщения об ошибке, настроенного в атрибуте [Required]


Подробнее здесь: https://stackoverflow.com/questions/783 ... nnotations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»