WebApi: создание пользовательского статуса BadRequest вне ApiController - PullRequest
0 голосов
/ 31 августа 2018

Использование .NET Core 2.0 WebApi.

У меня есть webapi, у которого есть много конечных точек, где каждая конечная точка обрабатывает и выдает BadRequest в случае сбоя. Как показано ниже:

if(data == null)
{
   return BadRequest("Data must not be blank.");
}

Теперь, поскольку эти коды состояния повторяются в моем API, я подумал о создании метода Helper, который бы возвращал BadRequest обратно в мой API.

Итак, я создал статический вспомогательный класс. Но проблема здесь в том, что BadRequest является частью ControllerBase и недоступен в моем вспомогательном классе. Каков наилучший способ создать этот метод, который будет возвращать BadRequest.

- Обновлен ---

Я хочу что-то вроде этого:

    public static BadRequest GetBadRequestMessage(string message)
    {
        return BadRequest(message);
    }

Я также пробовал как:

    public static BadRequestResult GetBadRequestMessage(string message)
    {
        return new  BadRequestResult(message);
    }

Но это дает ошибку: Код серьезности Описание Состояние подавления строки файла проекта Ошибка CS1729 «BadRequestResult» не содержит конструктор, который принимает 1 аргумент

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете вручную инициализировать результат действия

return new BadRequestObjectResult("error message here");

Что в основном и делает ControllerBase внутри

/// <summary>
/// Creates an <see cref="BadRequestResult"/> that produces a <see cref="StatusCodes.Status400BadRequest"/> response.
/// </summary>
/// <returns>The created <see cref="BadRequestResult"/> for the response.</returns>
[NonAction]
public virtual BadRequestResult BadRequest()
    => new BadRequestResult();

/// <summary>
/// Creates an <see cref="BadRequestObjectResult"/> that produces a <see cref="StatusCodes.Status400BadRequest"/> response.
/// </summary>
/// <param name="error">An error object to be returned to the client.</param>
/// <returns>The created <see cref="BadRequestObjectResult"/> for the response.</returns>
[NonAction]
public virtual BadRequestObjectResult BadRequest(object error)
    => new BadRequestObjectResult(error);

/// <summary>
/// Creates an <see cref="BadRequestObjectResult"/> that produces a <see cref="StatusCodes.Status400BadRequest"/> response.
/// </summary>
/// <param name="modelState">The <see cref="ModelStateDictionary" /> containing errors to be returned to the client.</param>
/// <returns>The created <see cref="BadRequestObjectResult"/> for the response.</returns>
[NonAction]
public virtual BadRequestObjectResult BadRequest(ModelStateDictionary modelState)
{
    if (modelState == null)
    {
        throw new ArgumentNullException(nameof(modelState));
    }

    return new BadRequestObjectResult(modelState);
}

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...