Подтвердить что ты не робот

Есть ли разница между методом Ok() new ObjectResult()?

Сценарий: реализация стандартного метода REST API/GET для основного контроллера .net.

В документации указано, что OkObjectResult является объектом ObjectResult со статусом 200. Это доступно с помощью метода Ok(myResult), унаследованного от ControllerBase. Я предполагаю, что это удобный метод.

Однако tutorial не использует этот подход - вместо этого он возвращает new ObjectResult(myResult), который по умолчанию будет иметь статус 200.

Есть ли разница между этими двумя подходами?

4b9b3361

Ответ 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, поэтому он все равно работает.