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:
- Clase ControllerBase (Gracias @Technetium)
- StatusCodes.cs (const disponibles en ASP.NET Core)
- Códigos de estado HTTP en Wiki
- Códigos de estado HTTP IANA
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();
}