Creando una API con operaciones CRUD – Parte 1

En un artículo anterior, vimos cómo crear un proyecto de ASP.NET Web Api. Ahora vamos a crear un controlador con operaciones CRUD sobre un modelo de datos sencillo.

La idea, es tener un controlador en Web Api que realice las operaciones CRUD mediante diferentes verbos HTTP. En resumen, algo como lo siguiente:

Verbo HTTP Acción sobre el modelo de datos Objetivo
GET Consultar Obtener los registros de la base de datos.
POST Crear Agregar un nuevo registro a la base de datos
PUT Actualizar Actualizar un registro existente en la base de datos
DELETE Eliminar Eliminar un registro existente en la base de datos.

Para iniciar, agregaré unas clases a la carpeta “Models” que tiene la solución, en las cuales tendremos todo el código de lo correspondiente al modelo de acceso datos, para lo que usaremos Entity Framework, el ORM de Microsoft. Si quieres conocer más de Entity Framework, no dejes de pasarte por el blog de mi amigo Gustavo, donde encontrarás mas información al respecto.

En primer lugar, adicionaremos una clase que representa el objeto que vamos a usar en el modelo.

public class Car
{
    public int Id { getset; }
    public string Name { getset; }
    public string Color { getset; }
}

Y también agregaremos una clase que representa el contexto de datos de Entity Framework.

public class CarsDbContext : DbContext
{
    public DbSet<Car> Cars { getset; }
 
    public CarsDbContext()
        : base("CarsDbConnection"// Nombre de la cadena de conexión a usar.
    { 
    }
}

El siguiente paso es agregar en el archivo de configuración una cadena de conexión con la base de datos que vamos a usar en nuestra API.

<add name="CarsDbConnection"
    connectionString="Data Source=localhost;
    Initial Catalog=Cars;Integrated Security=True"
    providerName="System.Data.SqlClient" />

Igualmente, Entity Framework nos provee una forma para poblar nuestra base de datos con alguna información de carga inicial, que se conoce como Initializers. Pondremos alguna información de prueba en nuestra base de datos, agregando la siguiente clase en la carpeta Models:

public class CarsDbInit : DropCreateDatabaseAlways<CarsDbContext>
{
    protected override void Seed(CarsDbContext context)
    {
        context.Cars.Add(new Car() { Id = 1, Name = "Porsche 911", Color = "Blue" });
        context.SaveChanges();
    }
}

Ahora, regresamos a nuestra clase de contexto a modificar su constructor para definir la inicialización. Finalmente debe verse así la clase:

public class CarsDbContext : DbContext
{
    public DbSet<Car> Cars { getset; }
 
    public CarsDbContext()
        : base("CarsDbConnection"// Nombre de la cadena de conexión a usar.
    { 
        var initializer = new CarsDbInit();
        Database.SetInitializer(initializer); // Configuración de Initializer.
    } }

El siguiente paso es agregar un nuevo controlador haciendo click derecho sobre la carpeta controllers:

webapi_primercrud_03

En el siguiente cuadro de diálogo, seleccionamos la plantilla “Web Api 2 Controller – Empty”, e ingresamos un nombre: “CarsController”.

webapi_primercrud_07

Agregaremos en nuestro controlador el primer método que nos permitirá consultar todos los objetos en la base de datos. Esto es algo tan sencillo como el siguiente código:

public IEnumerable<Car> Get()
{
    return dbContext.Cars.AsEnumerable();
}

Al ejecutar nuestra API, veremos lo siguiente:

webapi_primercrud_04

Si verificamos en la base de datos que definimos en la cadena de conexión, veremos que se creó la estructura que definimos en el modelo. Esto es gracias a Entity Framework y su enfoque Code First!

Un último aspecto que les quiero mostrar de Web Api en este artículo, es la premisa sobre la que también se basa ASP.NET MVC: Convención sobre configuración. Nuestro método tiene el nombre Get(), y esa es la convención que usa Web Api para determinar que dicho método corresponde al verbo HTTP GET. Eso no quiere decir que nuestro método siempre tiene que llamarse así. Nosotros podremos cambiar el nombre, adicionando un atributo al método que lo identifique como relacionado a la acción GET, así:

[HttpGet]
public IEnumerable<Car> SelectAllCars()
{
    return dbContext.Cars.AsEnumerable();
}

Si ejecutamos de nuevo la API en el navegador, podremos verificar que el resultado es el mismo del paso anterior.

Bueno, eso es todo por el momento en esta primera entrega. Espero que hayan entendido lo explicado. Recuerden profundizar sobre los conceptos de Entity Framework aquí vistos para que puedan comprender mejor el ejercicio en su conjunto.

En un próximo post complementaremos nuestra API con las demás operaciones CRUD

Puedes encontrar el código de este artículo en mi cuenta de GitHub

Anuncios

One Response to Creando una API con operaciones CRUD – Parte 1

  1. Pingback: Creando una API con operaciones CRUD – Parte 2 | hgr.net

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: