Есть ли разница между методом Ok() new ObjectResult()?
Сценарий: реализация стандартного метода REST API/GET для основного контроллера .net.
В документации указано, что OkObjectResult является объектом ObjectResult со статусом 200. Это доступно с помощью метода Ok(myResult)
, унаследованного от ControllerBase. Я предполагаю, что это удобный метод.
Однако tutorial не использует этот подход - вместо этого он возвращает new ObjectResult(myResult)
, который по умолчанию будет иметь статус 200.
Есть ли разница между этими двумя подходами?
Ответы
Ответ 1
Технически нет разницы между двумя подходами.
Если вы хотите посмотреть код OkObjectResult
, вы увидите, что OkObjectResult
- это ObjectResult
, который устанавливает код состояния 200, который по умолчанию равен ObjectResult
.
Единственное отличие для меня - это читаемость кода и ваши собственные или ваши предпочтения в команде. Это все о наименовании и о том, что вы хотите подчеркнуть.
return Ok(myResult); // gives emphasis on status, my personal favorite
return new OkObjectResult(myResult); // for me a little bit verbose and the same
// effect as Ok; but states we return an Object
return new ObjectResult(myResult); // gives emphasis of the content that is returned
Ответ 2
Я могу видеть только различие в том, чтобы полагаться на какое-то значение по умолчанию где-то и явно указывать это значение - последнее обычно лучше, и ваше намерение намного более ясно с помощью OkObjectResult
(или установки StatusCode
явно), что важно достаточно.
ObjectResult
не имеет значения по умолчанию StatusCode
из 200 - на самом деле это значение null по умолчанию. Однако HttpResponse
имеет код состояния по умолчанию 200, поэтому он все равно работает.