Как валидировать только структуру запроса, но не данные?

Для валидации только структуры запроса в C#, можно использовать атрибуты и специальные классы для моделирования запросов. Самый популярный способ валидации запросов - использование библиотеки ASP.NET Core MVC.

Вот пример, как можно осуществить валидацию только структуры запроса:

1. Создайте модель для запроса, используя атрибуты для определения требуемых полей и их структуры. Например, если вы хотите валидировать структуру запроса JSON, вы можете использовать атрибуты из пространства имен System.ComponentModel.DataAnnotations:

using System.ComponentModel.DataAnnotations;

public class MyRequestModel
{
    [Required]
    public string Field1 { get; set; }

    public int? Field2 { get; set; }
}

В этом примере, Field1 считается обязательным (т.е. не может быть null или пустой строкой), а Field2 является необязательным (т.е. может иметь значение null).

2. Создайте контроллер, который будет проверять валидность запроса. В ASP.NET Core MVC валидация запроса выполняется автоматически перед запуском метода действия. В контроллере можно добавить параметр типа модели запроса, который будет автоматически привязываться к запросу и проходить проверку:

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{
    [HttpPost]
    public IActionResult MyAction([FromBody] MyRequestModel requestModel)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        // Действия, выполняемые при валидном запросе
        return Ok();
    }
}

В этом примере, атрибут [FromBody] указывает, что данные запроса должны быть привязаны к модели MyRequestModel. Если данные запроса не соответствуют структуре модели (например, некорректный формат JSON), ModelState будет содержать информацию об ошибках.

3. Проверьте валидность запроса в методе действия контроллера. Если структура запроса недействительна, возвращайте BadRequest с объектом ModelState, который содержит информацию об ошибках валидации.

    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

Таким образом, вы можете проверять только структуру запроса (например, наличие и типы полей) при помощи встроенной в C# валидации с использованием атрибутов и библиотеки ASP.NET Core MVC.