Bienvenidos a este tutorial donde aprenderás  a crear una web api en el entorno ASP.NET Framework.

Para este tutorial necesitaremos varias herramientas:

  • Visual Studio: Interfaz donde realizaremos nuestra aplicación.

Link de descarga: https://docs.microsoft.com/es-es/visualstudio/install/install-visual-studio?view=vs-2019

  • Sql Server Management: La base de datos donde nuestro software accederá a nuestros datos.

Link de descarga SQL SERVER: https://www.microsoft.com/es-es/sql-server/sql-server-downloads

Descargar SQL Server Management: https://docs.microsoft.com/es-es/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

  • Postman: Aplicación que nos permitirá realizar peticiones HTTP a nuestra WEB API.

Link de descarga: https://www.getpostman.com/

¿Qué es una API?

Empezaremos explicando que es  una API (Interfaz de Programación de Aplicaciones). Es una interfaz que mediante protocolos  se desarrolla e  integra aplicaciones software. Incorpora aplicaciones de terceros, facilitando a los desarrolladores invertir menos tiempo en la creación de aplicaciones.

¿Qué es una WEB API?

Ahora que sabemos que es una API, explicaré que es una WEB API.

La gran característica de una Web Api es de solicitar mediante el protocolo HTTP al software de terceros al que se quiere integrar.

La ventaja de poder trabajar con el protocolo HTTP es poder realizar peticiones en cualquier lenguaje de programación. Y al solicitar la petición devuelve la información en formato JSON o XML.

CREACIÓN DEL PROYECTO

Paso 1 Realización de la base de datos.

Para crear una nueva base de datos.

  • Pinchamos con el botón derecho la carpeta Database y creamos una nueva.
  • En este caso lo llamaremos Biblioteca.
BBDD
NewBBDD
BBDDBiblioteca
GuardarDataBase

Paso 2 Creación de una tabla.

  • Abrimos la pestaña Biblioteca. Dentro de esta,  pinchamos botón derecho Nuevo —> Tabla
5.NuevaTabla
6.TablaVacia
  • Escribimos los nombres de cada columna con su correspondiente tipo de dato.

Los datos de las columnas  a representar son:

Nombre Columna   Tipo de Dato
Cod_Libro   int
Nombre_Alumno   nvarchar(50)
Titulo_Libro   nvarchar(50
Fecha_Entrega   date
IdEdtudiante   int
  • Guardamos los datos y le asignamos el nombre Prestamo_Libro a la tabla creada.
7.IconoGuardar
8.TituloTabla
  •  Insertamos los datos en la table Prestamo_Libro mediante una consulta.

INSERT INTO Prestamo_Libro

(Cod_Libro, Nombre_Alumno,Titulo_Libro, Fecha_Entrega, IdEstudiante)

VALUES

(1, ‘Juan’, ‘Jardinería en 3 Pasos’, ‘2020-4-8’, 1),

(2, ‘Maria’, ‘Historia de las Matemáticas’, ‘2020-5-18’, 2),

(3, ‘Esteban’, ‘Literatura Universal s.XX’, ‘2020-6-22’, 3),

(4, ‘Marta’, ‘Electrónica’, ‘2020-9-11’, 4)

  • Pinchar en el botón derecho sobre la tabla y seleccionamos la pestaña Select Top 1000 Rows para ver los datos de dicha tabla.
9.Select
10.DatosTabla
  • En Cod_Libro que será primary key y no aceptará valores null(vacíos).

-No valores null.

11.NoNull

 – Primary Key

– Botón derecho a la flecha y asignamos Primary.

12.CodLib
13.SetPrimary

PrimarTabla

Paso 3 Elaborar un Proyecto WEB API en el entorno EntityFramework en Visual Studio.

20.Project Studio
  • Creamos un nuevo proyecto.
21.CreateProject
  • Escribimos en el buscador asp.net web Application(.NETFramework)
22.NewProject
  • Y buscaremos la plantilla indicada.
23.AspNet
  • Asignamos el nombre del proyecto llamado ProyectoBiblio.
24.ConfigurePro
  • Elegimos la plantilla Web API
25.WebApiSelect
26.OverviewPro

Paso 4  Instalar la librería de EntityFramework

  • Botón derecho sobre el proyecto y seleccionamos Manage NuGet Packages.
27.ManageNu
  • En el buscador,  dentro de la pestaña Browse escribiremos EntityFramework e instalamos el paquete.
28.EntityInstall
29.FinishInstall
30.ReadyInstallEntity

Paso 5 Establecer la clase LibroPrestado.

  • Creamos una clase llamada  LibroPrestado. En ella escribimos las propiedades a la que mapearemos con las columnas procedente de la tabla Prestamo_Libro de la base de datos.
31.AddClass
32.NewClass
33.LibroClass
34.ClaseProp
  • Asignamos la primary Key  sobre la propiedad CodigoLibro para equiprar con Cod_Libro de la base de datos.
35.Key

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace ProyectoBiblio.Models
{
[Table(«Prestamo_Libro»)]
public class LibroPrestado
{
[Key]
[Column(«Cod_Libro»)]
public int CodigoLibro { get; set; }
[Column(«Nombre_Alumno»)]
public String NombreAlumno { get; set; }
[Column(«Titulo_Libro»)]
public String TituloLibro { get; set; }
[Column(«Fecha_Entrega»)]
public DateTime FechaEntrega { get; set; }
[Column(«IdEstudiante»)]
public int IDEstudiante{ get; set; }

}

}

Paso 6 Llamar la base de datos desde Visual Studio.

  • En la esquina superior izquierda pinchamos sobre Server Explorer.
36.ServerExplorer
37.PestañaExplorer
  • Ahora añadimos una nueva conexión.
38.BaseAña
39.AddConnection
  • Escribimos el nombre de nuestro servidor que se encuentra en Sql. Y seleccionamos el nombre de la base de datos(Biblioteca).
40.Connect
41.ZommConnect
42.ServerName
43.SelectBiblioteca

Paso 7 Conectar la base de datos a Visual Studio.

  • Crear la carpeta Data dentro del proyecto.
  • Pinchamos botón derecho sobre el proyecto y creamos una  carpeta nueva llamada Data.
44.ProjectData
45.FolderData
46.NewFolder
  • Creamos una clase llamada ContextoLibro.
47.AddClass
48.ClassCintextoLibro

Paso 8 Desarrollo de la cadena Conexión.

  • Copiaremos la cadena conexión alojado en Server Explorer. Designamos la etiqueta connectionString  dentro de la etiqueta configuration.

49.CadenaString
50.CadenaLinea
  • En la pestaña WebCongfig integramos la cadena conexón a nuestro proyecto.
  • Elaboramos las etiquetas <connectionStrings> donde alojaremos la conexión copiada.
52.ConnnecFinal

  <connectionStrings>

<add name=»conexionbiblioteca» connectionString=»Data Source=DESKTOP-KHV752N;Initial Catalog=Biblioteca;Integrated Security=True»

   providerName=»System.Data.SqlClient»/>   </connectionStrings>

Paso 9 Enlazar el contexto con la cadena conexión.

  • Ahora, volvemos a la clase ContextoLibro alojada en la carpeta Data. El nombre de esta clase heredará de DbContext que nos permite hacer de puente hasta nuestra cadena conexión.
53.DbContext
  • Escribimos el constructor de la clase llamada (ContextoLibro) donde anotamos el nombre de la conexión.
53.DbContext
54.NameConnection
  • Asociamos la tabla mapeada (LibroPrestado) junto a la colección de tipo DbSet.
56.DbFin
  • Creamos el método OnModelCreating para poder actualizar la clase LibroPrestado.

using ProyectoBiblio.Models;

using System;

using System.Collections.Generic;

using System.Data.Entity;

using System.Linq;

using System.Web;

namespace ProyectoBiblio.Data

{

public class ContextoLibro : DbContext {

public ContextoLibro():

base(«name=conexionbiblioteca») { }

public DbSet DbLibros { get; set; }

protected override void

OnModelCreating(DbModelBuilder modelBuilder)

{

Database.SetInitializer(null);

base.OnModelCreating(modelBuilder);

}

}

}

Paso 10 Asignar nuevo Controlador con EntityFramework

Compilamos el proyecto para poder arrancar el controlador sin problemas. Agregamos con botón derecho un nuevo controlador. Elegimos WebApi2 Controller with action, using Entity Framework.

Seleccionamos clase LibroPrestamo en la primera casilla.

En la segunda casilla elegimos la clase ContextoLibro .

Nombramos al controlador WebLibroController.

57.Build
58.FinishBuild
59.CarpetaCon
60.WebApiCON
61.VentanaVacia
62.VentanaRellena
63.ControllerFinish

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using ProyectoBiblio.Data;
using ProyectoBiblio.Models;

namespace ProyectoBiblio.Controllers
{
public class WebLibroController : ApiController
{
private ContextoLibro db = new ContextoLibro();

// GET: api/WebLibro

public IQueryable GetDbLibros()
{
return db.DbLibros;
}

// GET: api/WebLibro/5
[ResponseType(typeof(LibroPrestado))]

public IHttpActionResult GetLibroPrestado(int id)
{
LibroPrestado libroPrestado = db.DbLibros.Find(id);
if (libroPrestado == null)
{
return NotFound();
}

return Ok(libroPrestado);

}

// PUT: api/WebLibro/5
[ResponseType(typeof(void))]

public IHttpActionResult PutLibroPrestado(int id, LibroPrestado
libroPrestado)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

if (id != libroPrestado.CodigoLibro)
{
return BadRequest();
}

db.Entry(libroPrestado).State = EntityState.Modified;

try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!LibroPrestadoExists(id))
{
return NotFound();
}
else
{
throw;
}
}

return StatusCode(HttpStatusCode.NoContent);

}

// POST: api/WebLibro
[ResponseType(typeof(LibroPrestado))]

public IHttpActionResult PostLibroPrestado(LibroPrestado libroPrestado)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

db.DbLibros.Add(libroPrestado);
db.SaveChanges();

return CreatedAtRoute(«DefaultApi», new { id =

libroPrestado.CodigoLibro }, libroPrestado);
}

// DELETE: api/WebLibro/5
[ResponseType(typeof(LibroPrestado))]

public IHttpActionResult DeleteLibroPrestado(int id)
{
LibroPrestado libroPrestado = db.DbLibros.Find(id);
if (libroPrestado == null)
{
return NotFound();
}

db.DbLibros.Remove(libroPrestado);
db.SaveChanges();

return Ok(libroPrestado);

}

protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}

private bool LibroPrestadoExists(int id)
{
return db.DbLibros.Count(e => e.CodigoLibro == id) > 0;
}

}

}

Paso 11 Resultado del proyecto

  • Arrancamos el proyecto.
64.InicioASP
  • En la sección del menú de inicio tenemos la opción de API.
65.API
66.APIMethods
67.Methods11

Tenemos cuatro métodos a utilizar. GET, POST, PUT Y DELETE.

GET: Encargado de leer los datos.

POST: Introduce un nuevo dato.

PUT: Actualiza un dato.

DELETE: Elimina los datos.

Paso 12 Uitlizar el programa Postman.

Este último paso de este proyecto consiste en realizar las peticiones http mediante el programa Postman.

70.Postman
  • Copiamos la url de nuestro servidor local. Pinchamos con botón derecho sobre nuestro proyecto (ProyectoBiblioteca).
  • Buscamos la opción Properties. Pinchamos en la opción Web.
  • Dentro de Web nos muestra lo que buscamos, la url que nos da el acceso para realizar las peticiones.
71.ProyectoLibroClick
72.WebClick
73.UrlHttp
  • Ahora sabiendo que cada url realiza una función específica, pegamos la url GET en el programa de Postman.

GET

Es importante indicar al programa que tipo de método vamos a realizar.

73.UrlHttp
74.UrlApoWeb
75.httpLocal
76.DatosGet

GET/id

  • Introducir nuestra url local y nos mostrará los datos de un libro específico.
77.GetWeb
78.LocalHttp
79.CodDato

PUT

  • En el caso de actualizar debemos realizar varios cambios para poder modificar los datos.
  • En la pestaña Body seleccionaremos la opción raw para poder escribir los datos. Elegimos JSON el tipo de dato a representar.
  • Seleccionamos el dato a modificar y comprobamos en Sql el cambio realizado.
80.Put
81.none
82.Raw
83.DatosMod
84.SqlNoBase
85.SqlbAse

POST

Caso Post.

Continuaremos el mismo sitema que el método PUT.

Seleccionamos etiqueta POST, pegamos la url para el procedimiento post, opción raw y tipo de dato JSON.

Y mirar dichos cambios en nuestra base de datos.

86.Post
87.NombreEtiqueta
88.Cambios
89.DatosBaseNew

DELETE

El último paso es eliminar un registro.

Realizamos los siguentes pasos.

1.Seleccionar la etiqueta DELETE.

2.Colocar la url del procedimiento borrar

3.Chequear en la base de datos el registro borrado.

90.Delete
91.UrlDelete
92.BaseDelete

Autor: Benjamin Johnson Akpaloo Osei

Año: 2019-2020

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Centro: Tajamar

Año académico: 2019-2020

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.