tutorial net asp c# asp.net-core asp.net-core-mvc asp.net-core-webapi

net - web api c# tutorial



¿Cómo devolver un código de estado específico y ningún contenido del controlador? (3)

this.HttpContext.Response.StatusCode = 418; // I''m a teapot

¿Cómo finalizar la solicitud?

Pruebe otra solución, solo:

return StatusCode(418);


Puede usar StatusCode(???) para devolver cualquier código de estado HTTP.


Además, puede usar resultados dedicados:

Éxito:

  • return Ok() ← Http código de estado 200
  • return Created() ← Http código de estado 201
  • return NoContent(); ← Http código de estado 204

Error del cliente:

  • return BadRequest(); ← Http código de estado 400
  • return Unauthorized(); ← Http código de estado 401
  • return NotFound(); ← Http código de estado 404


Más detalles:

Quiero que el controlador de ejemplo a continuación devuelva un código de estado 418 sin contenido. Establecer el código de estado es bastante fácil, pero parece que hay que hacer algo para indicar el final de la solicitud. En MVC anterior a ASP.NET Core o en WebForms, eso podría ser una llamada a Response.End() pero ¿cómo funciona en ASP.NET Core donde Response.End no existe?

public class ExampleController : Controller { [HttpGet][Route("/example/main")] public IActionResult Main() { this.HttpContext.Response.StatusCode = 418; // I''m a teapot // How to end the request? // I don''t actually want to return a view but perhaps the next // line is required anyway? return View(); } }


Este código podría funcionar para controladores que no sean .NET Core MVC:

this.HttpContext.Response.StatusCode = 418; // I''m a teapot return Json(new { status = "mer" }, JsonRequestBehavior.AllowGet);


Si alguien quiere hacer esto con un IHttpActionResult puede estar en un proyecto de API web, a continuación puede ser útil.

// GET: api/Default/ public IHttpActionResult Get() { //return Ok();//200 //return StatusCode(HttpStatusCode.Accepted);//202 //return BadRequest();//400 //return InternalServerError();//500 //return Unauthorized();//401 return Ok(); }