ASP. NET Core Web API: как обрабатывать нулевые или пустые параметры? - PullRequest
0 голосов
/ 10 июля 2020

Проект веб-API создается в ASP. NET Core 2.2.

У меня есть метод POST, который принимает настраиваемый класс в качестве параметра:

public async Task<IActionResult> MyWebMethod(Id id,
        [FromBody] IReadOnlyCollection<MyCustomClass> instances)
{
    // Process the data
    return CreatedAtRoute("GetMyCollection",
                new
                {
                    id,
                    myIds = "someString";
                },
                responsesObject);
}

Код работает нормально, когда он получает правильный экземпляр.

Если метод получает какой-либо нулевой параметр или пустой объект из клиентского запроса, мне нужно отправить ответ 422 клиенту (422 Unprocessable Entity) .

Я поместил в метод код для обработки такого сценария ios:

    if (instances == null || instances.Count == 0)
    {
        return StatusCode(Convert.ToInt32(HttpStatusCode.UnprocessableEntity), instances);
    }

Но проблема в следующем: всякий раз, когда в метод веб-API передается нулевой или пустой объект , метод не срабатывает (когда я пытаюсь отладить метод).

Как лучше всего обработать такой запрос и отправить ответ 422 обратно клиенту?

1 Ответ

0 голосов
/ 10 июля 2020

Объявить instances как параметр по умолчанию, а затем проверить на ноль

public async Task<IActionResult> MyWebMethod(Id id,
        [FromBody] IReadOnlyCollection<MyCustomClass> instances = null)
{

    if (instances == null || instances.Count == 0)
    {
        return StatusCode(Convert.ToInt32(HttpStatusCode.UnprocessableEntity), instances);
    }
    //Proccess the data
}
...