Возврат кода HttpStatus в методе возвращает задачу <List <T>> - PullRequest
0 голосов
/ 31 марта 2019

Как я могу вернуть различные типы кодов HttpStatus в методе, который возвращает список? Если метод достигает блока try, он должен вернуть 200 (автоматически, так как это успешный ответ). Нужно вернуть 404, если попадет в блок catch.

[HttpGet]
[Route("{customerId}")]
public async Task<List<CategoryEntity>> GetCategoryByCustomerId(Guid customerId)
{
    try
    {
         List<CategoryEntity> categoryEntities = _categoryRepository.GetAllCategoriesByCustomerId(customerId);
         return categoryEntities;
    }
    catch (Exception ex)
    {
         _logger.LogError(ex, ex.Message);
         return null;
    }
}

Ответы [ 2 ]

2 голосов
/ 31 марта 2019

Если вы хотите, чтобы ваш метод генерировал определенные коды состояния HTTP, ваш метод должен вернуть IActionResult. Типы ActionResult представляют коды состояния HTTP ( ref ).

Для вашего метода вы должны вернуть OkResult внутри вашего блока try, чтобы метод ответил с HTTP 200 и NotFoundResult внутри вашего catch, чтобы он ответил с HTTP 404.

Вы можете передать данные, которые хотите отправить обратно клиенту (т. Е. Ваш List<T>) в конструктор OkResults.

0 голосов
/ 31 марта 2019
[HttpGet]
[Route("{customerId}")]
public async Task<List<CategoryEntity>> GetCategoryByCustomerId(Guid customerId)
{
    try
    {
        List<CategoryEntity> categoryEntities = _categoryRepository.GetAllCategoriesByCustomerId(customerId);
        HttpContext.Response.StatusCode = (int)HttpStatusCode.OK;
        return categoryEntities;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, ex.Message);
        HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
        return null;
    }
}
...