Hola en este tutorial dividido en diferentes partes aprenderás como implementar una aplicación de web api con C# de manera sencilla y rápida.
La web API consiste en crear un servicio de consulta por código postal de la república mexicana para obtener información de colonias, municipios, estado, ciudad etcétera.
Algunos de los temas que veremos.
- Web API
- SQL Managmente Studio
- Importación masiva de datos con SQL MS
- PostMan
- Data Annotations
- Seguridad con Json Web Tokens (JWT).
Descargar XLS SEPOMEX
Descargaremos el archivo xls donde se encuentran todos los códigos postales de la republica mexicana, podemos escoger por estado en especifico o descargar todos
https://www.correosdemexico.gob.mx/SSLServicios/ConsultaCP/CodigoPostal_Exportar.aspx
Una vez descargado el archivo podemos ver que tiene múltiples columnas, dependiendo el proyecto podemos usar todas, en nuestro caso solo usaremos algunas.
Creando el Modelo
Del archivo xls solo utilizaremos las primeras columnas y las propiedades las nombraremos con nombres más amigables.
Creamos un folder llamado Models
Creamos una clase modelo llamada CodigosPostalesModel y añadimos el siguiente código.
Usaremos Data Annotations para los atributos que forzaran algunas propiedades también la clave primaria.
public class CodigosPostalesModel
{
[Key]
public int CodigoPostalId { get; set; }
[Required]
public string CodigoPostal { get; set; }
[Required]
public string Asentamiento { get; set; }
public string Municipio { get; set; }
[Required]
public string Estado { get; set; }
public string Ciudad { get; set; }
}
Creando la DAL (Data Access Layer)
Ahora necesitamos crear nuestra base de datos y en C# crear la capa de acceso de datos que es el contexto para crear las entidades de SQL a C#.
Abrimos SQL Managment y creamos nuestra base de datos llamada: ApiSepomex
En nuestro visual studio nos vamos al menú herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución, se nos abrirá una ventana en la cual podemos buscar paquetes, agregamos los paquetes NuGet:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore
Creamos una carpeta en la raíz de nuestro proyecto y la nombramos como DAL
Para crear el contexto añadimos una clase llamada CodigosPostalesContext
Añadimos las referencias de EntityFramework y nuestra clase modelo con las siguientes dependencias, podemos eliminar las que no necesitemos.
using Microsoft.EntityFrameworkCore;
using TodoApi.Models;
Añadimos el siguiente código el cual es el constructor del contexto con inyección de dependencias y añadimos el DbSet como propiedad para nuestra entidad, al añadir esta propiedad al ejecutar nuestro comando de migración, creará dicha tabla.
public CodigosPostalesContext(DbContextOptions<CodigosPostalesContext> options) : base(options)
{
}
public DbSet<CodigosPostalesModel> CodigosPostales { get; set; }
Quitamos todos los using innecesarios
Haciendo inyección de dependencias
Abrimos el archivo Startup.cs y añadimos la siguiente linea en nuestro método ConfigureServices
services.AddDbContext<CodigosPostalesContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
Tendría que quedarnos algo así:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<CodigosPostalesContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllers();
}
Lo anterior especifica que tendremos acceso en toda nuestra aplicación y además estamos especificando que usaremos SQL Server y pasamos la cadena de conexión, dicha cadena se encuentra en la configuración de app en formato json el cual la tenemos que especificar.
Abrimos el archivo appsettings.json y añadimos la siguiente linea
"ConnectionStrings": {
"DefaultConnection": "Server=.\\SQLEXPRESS;Database=ApiSepomex;User Id=sa;Password=xxxx; Integrated Security=True;"
},
Ejecutando los comandos finales en consola
En esa última etapa ejecutaremos los comandos para finalmente crear nuestra entidad y comenzar a usarlos
Instala el siguiente paquete para poder ejecutar los comandos:
Install-Package Microsoft.EntityFrameworkCore.Tools
Ahora ejecutamos el primer comando el cual creará la migración inicial y servirá para crear todos los modelos y configuraciones que hemos especificado
Add-Migration InitialCreate
Hasta este punto, aún no se crean las tablas en nuestra base de datos, para eso tendremos que actualizarla con el comando siguiente:
Update-Database
Y bueno, hasta este punto ya tenemos la primer parte para nuestra web api, en la siguiente parte haremos la inserción masiva de datos y también haremos las primeras consultas web api mediante nuestro controlador Postman.