{"id":1121,"date":"2020-11-14T03:10:23","date_gmt":"2020-11-14T07:10:23","guid":{"rendered":"https:\/\/benjaminray.com\/codebase\/?p=1121"},"modified":"2020-11-14T03:30:13","modified_gmt":"2020-11-14T07:30:13","slug":"returning-status-codes-in-an-asp-net-mvc-core-controller","status":"publish","type":"post","link":"https:\/\/benjaminray.com\/codebase\/returning-status-codes-in-an-asp-net-mvc-core-controller\/","title":{"rendered":"Returning Status Codes in an ASP.Net MVC Core Controller"},"content":{"rendered":"<p>There are a few ways to return different status codes in an ASP.Net MVC Core controller.<\/p>\n<h2>Simplified Helper Methods<\/h2>\n<p>Some helper methods for the most common codes (there may be more than the list below):<\/p>\n<pre><code>return Ok();           \/\/ Status Code 200\nreturn Created();      \/\/ Status Code 201 (this one requires parameters)\nreturn NoContent();    \/\/ Status Code 204\nreturn BadRequest();   \/\/ Status Code 400\nreturn Unauthorized(); \/\/ Status Code 401\nreturn Forbid();       \/\/ Status Code 403\nreturn NotFound();     \/\/ Status Code 404\n<\/code><\/pre>\n<p>Some of the helper methods above have overrides that allow you to include an optional response (test\/json\/html):<\/p>\n<pre><code>return Ok(someJson);\nreturn NotFound(\"we looked but it's GONE\");\n<\/code><\/pre>\n<h2>Return StatusCode()<\/h2>\n<p>Basic return of a status code and an optional response, which can be text, json, html, etc:<\/p>\n<pre><code>return StatusCode(403)\nreturn StatusCode(403, \"some text, json, etc.\");\n<\/code><\/pre>\n<h2>Use StatusCodes Enum Instead of Integer<\/h2>\n<p>It can be really helpful to make use of the StatusCodes enum (requires <code>using Microsoft.AspNetCore.Http;<\/code>), which provides some built-in meaning to the otherwise-forgettable status code integer values. A developer who looks at your code in the future (including yourself) will be grateful to see something like <code>StatusCodes.Status424FailedDependency<\/code> instead of just <code>424<\/code>.<\/p>\n<pre><code>return StatusCode(StatusCodes.Status403Forbidden)\nreturn StatusCode(StatusCodes.Status403Forbidden, \"some text, json, etc.\"); \/\/ \n<\/code><\/pre>\n<p>Visual Studio autocompletes the enum, making it easy for you to peruse the list of HTTP responses without having to look up which codes mean what. (Although you may still have to read up on the proper way to use them.)<\/p>\n<p><a href=\"https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum.png\"><img decoding=\"async\" data-attachment-id=\"1122\" data-permalink=\"https:\/\/benjaminray.com\/codebase\/returning-status-codes-in-an-asp-net-mvc-core-controller\/2020-11-14-statuscodes-enum\/\" data-orig-file=\"https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum.png\" data-orig-size=\"598,183\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"2020-11-14-statuscodes-enum\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum.png\" src=\"https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum.png\" alt=\"\" width=\"598\" height=\"183\" class=\"aligncenter size-full wp-image-1122\" srcset=\"https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum-200x61.png 200w, https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum-300x92.png 300w, https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum-400x122.png 400w, https:\/\/benjaminray.com\/codebase\/wp-content\/uploads\/2020\/11\/2020-11-14-statuscodes-enum.png 598w\" sizes=\"(max-width: 598px) 100vw, 598px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are a few ways to return different status codes in an ASP.Net MVC Core controller. Simplified Helper Methods Some helper methods for the most common codes (there may be  [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6,22],"tags":[],"class_list":["post-1121","post","type-post","status-publish","format-standard","hentry","category-development","category-mvc"],"acf":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9GNjN-i5","jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/posts\/1121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/comments?post=1121"}],"version-history":[{"count":11,"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/posts\/1121\/revisions"}],"predecessor-version":[{"id":1133,"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/posts\/1121\/revisions\/1133"}],"wp:attachment":[{"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/media?parent=1121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/categories?post=1121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benjaminray.com\/codebase\/wp-json\/wp\/v2\/tags?post=1121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}