Crear API con C#

Paso 1: Crear proyecto en Visual Studio

Seleccionar ASP.NET Core Web API

Paso 2: Seleccionar dónde guardar el proyecto

Paso 3: Crear el modelo

3.1 Crear una carpeta Models

3.2 Crear una Clase dentro e la carpeta Models

3.3 Importar la siguiente librería

3.4 Generamos nuestro modelo

public enum SexType

{

Hombre = 0,

Mujer = 1,

}


[Key]

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

public int pruebaId { get; set; }


[Required(AllowEmptyStrings = false, ErrorMessage = "{0} es requerido")]


[StringLength(200, MinimumLength = 10, ErrorMessage = "La longitud de {0} debe ser mayor a 10")]

public string name { get; set; }


[Required(AllowEmptyStrings = false, ErrorMessage = "{0} es requerido")]

[StringLength(200, MinimumLength = 10, ErrorMessage = "La longitud de {0} debe ser mayor a 10")]

public string description { get; set; }

Paso 4: Modificar el appsettings.json


4.1 Obtener nuestra cadena de conexión

Para obtener nuestra cadena de conexión debemos tener creado previamente los siguientes puntos

  • Grupo de recursos

  • Una base de datos SQL Database

  • Un servidor en Azure

Click aquí para abrir la guía para realizar estos requerimientos.

Paso 5: Añadir nuevos NugetPackages


5.1 Debemos instalar estos paquetes

Microsoft.entityFrameworkCore

Microsoft.entityFrameworkcore.tools

Microsoft.EntityFrameworkCore.SqlServer

Paso 6: Crear nuestro AppDbContext

6.1 Crear una carpeta Data dentro de nuestro proyecto

6.2 Dentro de Data, crear una clase llamada AppDbContext

6.3 Estructurar nuestro AppDbContext

public AppDbContext(DbContextOptions<AppDbContext>options): base(options) { }

public DbSet <model> model { get; set; }


6.4 Esta es la estructura base

Siguiendo nuestro ejemplo... Model va a ser modificado por People y debemos importar dicho modelo a nuestras librerias con Control + .

Paso 7: Configurar nuestro archivo program.cs


Código:

var connectionString= builder.Configuration.GetConnectionString("DbContext");

builder.Services.AddDbContext<AppDbContext>(options=>options.UseSqlServer(connectionString));

Nota: A partir de NET 6, dejó de existir el archivo Startup.cs, ahora esos cambios se hacen directamente en Program.cs

Paso 8: Crear nuevo controlador

8.1 En la carpeta Controllers, agregaremos un nuevo controlador

8.2 Seleccionar esta opción.

8.3 Agregamos nuestros modelos

Muy importante antes de realizar este paso, se debe guardar todo el proyecto.

Paso 9: Comprobar el estado de conexión

9.1 Abrir el explorador de servidores

9.2 Seleccionar esta opción

9.3 Seleccionar el origen de datos

9.4 Completar los campos con los datos que nos proporciona Azure con nuestro usuario y contraseña escritos anteriormente. (véase el Paso 4 de la Guía Azure).

9.5 Click en Probar conexión.

Paso 10: Realizar la migración

10.1 Abrir la consola de administrador de paquetes

10.2 Escribir Add-Migration AddModel en la consola.

En caso que necesitemos actualizar la Base de datos se utiliza este comando Update-DataBase

Paso 11: Ejecutar

Paso 12: Publicar

12.1 Click Derecho en el proyecto -> Publicar

Crear una nueva instancia

Seleccionar nuestro grupo de recursos

Seleccionar nuevo plan de hospedaje

Seleccionar nuestro plan, ubicación East US y tamaño free

Nos debería quedar así y le damos siguiente

Seleccionamos omitir este paso

Y publicar

Paso 13: WebApp

13.1 Nos dirigimos a Views -> Shared -> Layout

Nota: Previamente se tuvo que haber creado los controladores.

13.2 Editamos el HTML

<ul> ---- tiene que estar adentro de esta etiqueta

<li class="nav-item">

<a class="nav-link text-dark" asp-area="" asp-controller="EL NOMBRE DE TU CONTROLADOR" asp-action="Index">Cualquier cosa qué querramos</a>

</li>

</ul> ---- tiene que estar adentro de esta


13.3 En caso de que usemos algún Enum se modifica el siguiente archivo.

Ir a View -> Nombre de nuestro controlador -> Create

Modificar el HTML

<select asp-for="Mascota" asp-items="Html.GetEnumSelectList<MascotaType>()" class="form-control"></select>

Nota: Solo donde dice Select

Crear random

private readonly AppDbContext _context;

public RandomController(AppDbContext context)

{

_context = context;

}

[HttpGet]

public async Task<ActionResult<Nombre_del_modelo>> GetRandoms()

{

var list = await _context.Nombre_del_modelo.ToListAsync();

var max = list.Count;

int index = new Random().Next(0, max);

var cualquier_cosa = list[index];

if (cualquier_cosa == null)

{

return NoContent();

}


return cualquier_cosa;

}