I'm playing a bit with ASP.NET Core. I'm creating a basic webapi. I'd like to show a JSON error when there is a problem.
The printscreen shows want I want on my screen. The only problem is that it's send with a statuscode of 200.
catch (NullReferenceException e)
{
return Json(NotFound(e.Message));
}
I could solve it by doing this:
return NotFound(new JsonResult(e.Message) {StatusCode = 404);
But I don't like this because now you can specify statuscode 500 with a NotFound.
Can someone put me in the correct direction?
Sincerely, Brecht
Can't you do something like return NotFound(e.Message);
Or you might have your own error document format and go for return NotFound(new ErrorDocument(e.message));
If you have to return with a JsonResult then go for something like the following:
return new JsonResult(YourObject) { StatusCode = (int)HttpStatusCode.NotFound };
Now you have full control over response format and your status code too. You can even attach serializer settings if need be. :)
EDIT: Found a much better solution here on stackoverflow.
Thank you Swagata Prateek for reminding me to just use a return new JsonResult()
. I did solve me problem on this way.
public class Error
{
public string Message { get; }
public int StatusCode { get; }
public Error(string message, HttpStatusCode statusCode)
{
Message = message;
StatusCode = (int)statusCode;
}
}
[HttpGet("{id}")]
public IActionResult Get(int id)
{
try
{
return Ok(_manager.GetPokemon(id));
}
catch (NullReferenceException e)
{
var error = new Error(e.Message, HttpStatusCode.NotFound);
return new JsonResult(error) {StatusCode = error.StatusCode};
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.