Siguiendo con el tema ASP.NET Core que hemos estado viendo en anteriores posts, ahora vamos a ver qué sucede con ASP.NET Web Api en la plataforma ASP.NET Core, ya que si bien su esencia sigue siendo la misma, de todas formas también hay novedades.

El gran cambio es que ahora ASP.NET Core es un modelo unificado para MVC y para Web API. Esto significa que ahora todos los controladores tendrán una misma clase base Controller. En las versiones anteriores de ASP.NET se tenía la clase base Controller para los controladores MVC y la clase base ApiController para los controladores Web API.

La consecuencia de lo anterior es que ahora podremos tener en un mismo controlador funcionalidad que retorne una vista Razor y funcionalidad que retorne un resultado Json o funcionalidad que retorne un código de estado Http. Veamos el siguiente ejemplo de un controlador:

public class TestController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
 
    public IActionResult Json()
    {
        var product = new Models.Product { Id = 1, Name = "T-shirt" };
        return Ok(product);
    }
 
    public IActionResult BadRequest()
    {
        return HttpBadRequest();
    }
}

Si vemos los resultados de invocar cada una de las acciones, podemos comprobar las diferentes combinaciones:

webapicore01

webapicore02

webapicore03

Como podemos verlo, todos los diferentes tipos de resultados en un solo controlador MVC.

Por otro lado, otra cosa importante de mencionar es que ahora podemos tener la característica de Attribute routing que antes podíamos usar en Web API ahora también para controladores y acciones MVC. Miremos un ejemplo de un controlador que retorna una vista Razor usando atributos para el routing.

[Route("web/hello")]
public class TestController : Controller
{
    [Route("{name}")]
    public IActionResult Index(string name)
    {
        ViewData["message"] = "Hello, " + name + "!";
        return View();
    }
}

Ahora, miramos el resultado en el navegador (mira la URL usada en la barra de direcciones).

webapicore04

Bien, esto es todo por este post. Si quieres aprender sobre Web API, te invito a visitar la documentación oficial de ASP.NET y también no dejes de ver los otros posts que hay en mi blog personal al respecto.

¡Hasta una próxima!