9

The BadRequest method available on ApiController only accepts a string:

// Summary:
//     Creates an System.Web.Http.Results.ErrorMessageResult (400 Bad Request) with
//     the specified error message.
//
// Parameters:
//   message:
//     The user-visible error message.
//
// Returns:
//     An System.Web.Http.Results.InvalidModelStateResult with the specified model
//     state.
protected internal virtual BadRequestErrorMessageResult BadRequest(string message);

Why is there no overload which accepts an custom error model T?

For example, I might want to return a code along with the message:

{
    message: "Error message",
    code: "1000",
}

I could just do the following but I suspect there must be an underlying reason (perhaps in accordance with RESTful standards?):

return Content(HttpStatusCode.BadRequest, errorModel);
Dave New
  • 38,496
  • 59
  • 215
  • 394

1 Answers1

14

Not sure if this is still relevant, as the question is more than 2 years old... Still, the way to do it is indeed using

return Content(HttpStatusCode.BadRequest, errorModel);

Having a standardized model for errors to include detailed information is actually a pretty good practice. See also here: API Best Practices: Response Handling

Andrei Matracaru
  • 3,511
  • 1
  • 25
  • 29