PMBjornerud PMBjornerud - 2 months ago 28
C# Question

Is there any difference between the Ok() method new ObjectResult()?

Scenario: implementing a standard REST API / GET method on a .net core controller.

The documentation states that OkObjectResult is an ObjectResult with status 200. This is available through the

Ok(myResult)
method inherited from ControllerBase. I assume this is a convenience method.

However, the tutorial is not using this approach - it instead returns
new ObjectResult(myResult)
which will default to status 200.

Is there any difference between these two approaches?

Answer

Technically there is no difference between the two approaches.

If you want to look at the code of OkObjectResult then you will see that the OkObjectResult is an ObjectResult that sets the 200 status code, which is the default of ObjectResult already.

The only difference for me is readability in code and your own or your team preferences. It is all about naming and what intention you want to stress.

 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
Comments