Проверка достоверности объекта JSON при вводе метода POST в веб-API ASP.NET Core ⇐ C#
Проверка достоверности объекта JSON при вводе метода POST в веб-API ASP.NET Core
У меня проблема в уже реализованном проекте. Здесь я приведу более простой пример, чтобы изолировать проблему. Предположим, у нас есть простой класс Person.
пространство имен JsonTest.Models; общественный класс Человек { общедоступный идентификатор Guid {get; набор; } общественная строка FirstName {get; набор; } = строка.Пусто; общественная строка LastName {get; набор; } = строка.Пусто; общественный ИНТ Возраст {получить; набор; } } А еще у нас есть простой контроллер с единственным методом, задача которого — возвращать JSON с данными person.
с использованием Microsoft.AspNetCore.Mvc; использование JsonTest.Models; пространство имен JsonTest.Controllers; [Апиконтроллер] [Маршрут("[контроллер]")] открытый класс JsonTestController: ControllerBase { [HttpPost] public IActionResult SavePerson ([FromBody] Person person) { return new JsonResult(new { person.Id, person.FirstName, person.LastName, person.Age }); } } Этот метод ведет себя предсказуемо с предсказуемыми данными.
Например
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } вернётся
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } Но если вы передадите неполный JSON (по какой-то причине это иногда случается в проекте), недостающие данные будут иметь значения по умолчанию.
Например
{ "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } вернётся
{ "id": "00000000-0000-0000-0000-000000000000", "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } Но в моем случае объект person должен быть полным. В противном случае я ожидаю исключения. Я понимаю, что могу поместить атрибут [BindRequired] в свойство Id в классе Person и заменить [FromBody] на [FromQuery] в методе. Но таких конструкций в проекте много и хотелось бы решить эту проблему.
Итак, мой вопрос: Как указать, какие данные в объекте JSON необходимы, если объект взят из тела запроса?
У меня проблема в уже реализованном проекте. Здесь я приведу более простой пример, чтобы изолировать проблему. Предположим, у нас есть простой класс Person.
пространство имен JsonTest.Models; общественный класс Человек { общедоступный идентификатор Guid {get; набор; } общественная строка FirstName {get; набор; } = строка.Пусто; общественная строка LastName {get; набор; } = строка.Пусто; общественный ИНТ Возраст {получить; набор; } } А еще у нас есть простой контроллер с единственным методом, задача которого — возвращать JSON с данными person.
с использованием Microsoft.AspNetCore.Mvc; использование JsonTest.Models; пространство имен JsonTest.Controllers; [Апиконтроллер] [Маршрут("[контроллер]")] открытый класс JsonTestController: ControllerBase { [HttpPost] public IActionResult SavePerson ([FromBody] Person person) { return new JsonResult(new { person.Id, person.FirstName, person.LastName, person.Age }); } } Этот метод ведет себя предсказуемо с предсказуемыми данными.
Например
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } вернётся
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } Но если вы передадите неполный JSON (по какой-то причине это иногда случается в проекте), недостающие данные будут иметь значения по умолчанию.
Например
{ "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } вернётся
{ "id": "00000000-0000-0000-0000-000000000000", "firstName": "Дэвид", "lastName": "Смит", «возраст»: 26 } Но в моем случае объект person должен быть полным. В противном случае я ожидаю исключения. Я понимаю, что могу поместить атрибут [BindRequired] в свойство Id в классе Person и заменить [FromBody] на [FromQuery] в методе. Но таких конструкций в проекте много и хотелось бы решить эту проблему.
Итак, мой вопрос: Как указать, какие данные в объекте JSON необходимы, если объект взят из тела запроса?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение