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;
}