Тип возврата контроллера в Asp.Net Core API - PullRequest
0 голосов
/ 19 декабря 2018
    [HttpGet("{id}")]
    public Visitor Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result == _visitorRepository.GetFromDB(id))
            return StatusCode(200);
        if (result != null)
            return result;
        else
            return StatusCode(408);
    }

Это дает мне ошибку, потому что StatusCode имеет тип возврата ActionResult

    [HttpGet("{id}")]
    public ActionResult Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result == _visitorRepository.GetFromDB(id))
            return StatusCode(200);
        if (result != null)
            return result;
        else
            return StatusCode(408);
    }

Это дает мне ошибку, потому что результат имеет тип возврата Visitor

Мне нужен только один метод, но яневозможно преобразовать возвращаемый тип из ActionResult в посетителя и наоборот.

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Вы можете исправить обе свои функции согласно приведенному ниже объяснению.

Если ваша первая функция:

[HttpGet("{id}")]
    public Visitor Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result != _visitorRepository.GetFromDB(id))
            return StatusCode(200); // Somehow make this to return "Visitor" type
        if (result != null)
            return result;  // Somehow make this to return "Visitor" type
        else
            return StatusCode(408); // Somehow make this to return "Visitor" type
    }

Если вы хотите перейти ко второй функции, внесите следующие изменения:

[HttpGet("{id}")]
    public ActionResult Get(string id)
    {
        var result = _visitorRepository.GetFromDB(id);

        if (result != _visitorRepository.GetFromDB(id))
            return Ok();
        if (result != null)
            return Ok(result); // Return type of ActionResult
        else
            return BadRequest();
    }

Только для справки ActionResult для StatusCode(200) тип возврата может быть как

return Ok();
0 голосов
/ 19 декабря 2018

Решение:

[HttpGet("{id}")]
public IActionResult Get(string id)
{
  if (id == null)
  {
    return BadRequest();
    var result = _visitorRepository.GetFromDB(id);
  }
  if (result != null)
    return Ok(result);

  else
    return NotFound();
}
0 голосов
/ 19 декабря 2018
return new HttpStatusCodeResult(HttpStatusCode.OK);  // OK = 200

https://forums.asp.net/t/2084457.aspx?How+do+I+return+HttpStatus+codes+in+ASP+NET+Core+1+0+API+

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