WEB API REST

WEB API REST es un marco que hace que sea fácil de construir servicios HTTP que llegan a una amplia gama de clientes, incluyendo los navegadores y dispositivos móviles. Es una plataforma ideal para la creación de aplicaciones REST en el Framework .NET

¿Por qué utilizar la API de Web?

En la actualidad la mayoría de las aplicaciones de dispositivos requieren servicios de datos basados en API REST, la mayoría de los clientes utilizan los dispositivos móviles como medio para acceder a Internet y es muy frecuente tener que atacar a otros servicios para obtener estos datos.

El Marco de ASP.Net aprovecha los estándares web como HTTP, XML y JSON y que proporciona una forma sencilla de construir y exponer a los servicios de datos basados en REST.

¿Cuándo se debe utilizar?

Cuando desees exponer datos/información a sus clientes u otras personas, si quieres que esas personas puedan utilizar e interactuar con los datos/información que se exponen, necesitas una API.

Algunos conceptos básicos de ASP.Net MVC son similares a la API de Web ASP.Net tales como enrutamiento y los controladores.

  • El cliente es lo que consume la API de Web (navegador, aplicación móvil, y así sucesivamente). Nosotros vamos a utilizar POSTMAN  para probar la aplicación.
  • Un modelo es un objeto que representa los datos de la aplicación. En este caso, el único modelo es un elemento de tarea. Los modelos se representan como clases de C # simples.
  • Uncontrolador es un objeto que trata las solicitudes HTTP y crea la respuesta HTTP. Esta aplicación va a tener un solo controlador.

¿Qué vamos hacer?

En este tutorial vamos a elaborar una API REST en 3 sencillos pasos, que será capaz de realizar una recuperación sobre un tipo de objeto complejo.

En futuros tutoriales realizaremos el resto de operaciones CRUD para complementar la API, es decir, realizara inserciones, modificaciones y borrado.

Para ello he utilizado el framework de ASP.NET Web API de Microsoft Visual Studio, y Postman como herramienta para realizar las pruebas funcionales; para mantener sencillo tutorial, la aplicación no utilizara una base de datos. En su lugar, sólo mantiene las tareas pendientes en la memoria. Incluyen una capa de acceso de datos (trivial), para ilustrar la separación entre el API web y la capa de datos; y como lenguajes de programación C# y Linq.

El resultado final será un método REST que recupere todas las personas

* GET localhost:4100/api/persona y a raíz de esta solución si queremos podremos acceder a cada persona

* GET localhost:4100/api/persona /7 (Recupera la persona con Id 7)

Como lo tenemos en local la dirección es generada por el ISS. El número del puerto cambia en cada ejecución del ISS, si atacásemos directamente a una Web Api seria:

*GET http://loquesea/api/persona

Software:

Internet Information Services (IIS) 10.0 Express: es una versión de IIS gratuita, sencilla y con autocontenido optimizada para programadores.

https://www.microsoft.com/es-es/download/details.aspx?id=48264

Visual Studio: IDE gratuito, con todas las funciones para los estudiantes, de código abierto y los desarrolladores individuales

https://go.microsoft.com/fwlink/?LinkId=691978&clcid=0x409

Postman

https://www.getpostman.com/

DESARROLLO

PASO 1)  Creamos un proyecto nuevo MVC Web API

1 WEB API REST

Aplicación Web ASP .NET llamado ServicioApiPersonas.
2 WEB API REST
Seleccionamos Web API
3 WEB API REST
PASO 2) Vamos a crearnos una nueva clase Persona.cs sobre la carpeta Models.

4 WEB API REST
using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

namespace ServicioApiPersonas.Models

{

public class Persona

{

public int IdPersona { get; set; }

public String Nombre { get; set; }

public String Email { get; set; }

public int Edad { get; set; }

}

}

PASO 3) A continuación, es el momento de crearnos nuestro controlador, para ello, sobre la carpeta Controllers
, agregamos un nuevo elemento de tipo Clase de controlador de Web API y lo llamaremos PersonasController.

5 WEB API REST
6 WEB API REST
El controlador para los servicios REST hereda de la clase ApiController.
7 WEB API REST
A continuación, tendremos que crearnos métodos GET para poder recuperar información.
Realizaremos los siguientes métodos sobre el controlador:

  • GetPersonas() –> Devuelve una lista de todas las personas.
  • GetPersona(int idpersona) –> En este caso, devuelve una persona identificada por su ID.

Escribimos el siguiente código en nuestro controlador PersonasController.

PERSONASCONTROLLER.CS

using ServicioApiPersonas.Models;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Net.Http;

using System.Web.Http;

 

namespace ServicioApiPersonas.Controllers

{

public class PersonasController : ApiController

{

List<Persona> listapersonas = new List<Persona>();

//Como no tenemos BBDD, declaramos en el constructor las personas que estarían en //nuestra BBDD

public PersonasController()

{

Persona p = new Persona { IdPersona = 1, Nombre = «Lucia», Email = «lucia@gmail.com», Edad = 19 };

this.listapersonas.Add(p);

p = new Persona { IdPersona = 2, Nombre = «Adrian», Email = «adrian@gmail.com», Edad = 24 };

this.listapersonas.Add(p);

p = new Persona { IdPersona = 3, Nombre = «Alejandro», Email = «alejandro@gmail.com», Edad = 21 };

this.listapersonas.Add(p);

p = new Persona { IdPersona = 4, Nombre = «Sara», Email = «sara@gmail.com», Edad = 17 };

this.listapersonas.Add(p);

}

// GET api/<controller>

public List<Persona> GetPersonas()

{

return this.listapersonas;

}

// GET api/<controller>/9

public Persona GetPersona(int id)

{

Persona p = this.listapersonas.Find(z => z.IdPersona == id);

return p;

}

}

}

Y ya tendremos montado el servicio REST

Ahora, para acceder a su consumo necesitamos escribir la siguiente dirección en el explorador. (Cliente)  http://localhost:50148/api/Personas
Siempre nos referiremos a api/<controller> para poder acceder a cualquier contenido de la api.

Entraría en el método GET de GetPersonas() y nos muestra la respuesta con los datos.
8 WEB API REST
9 WEB API REST

Si deseamos que nos muestre una única persona, debemos escribir la dirección con el ID de la personas a buscar y se ejecutará el código GET de GetPersona (int idpersona).  http://localhost:50148/api/Personas/3

Veremos que todo funciona correctamente y que los datos son devueltos al cliente.
10 WEB API REST
11 WEB API REST

Y con esto ya tengo lista mi API para ser consumida desde cualquier punto de Internet.

Si ya habéis instalado la extensión POSTMAN, vamos a ella y la abrimos, nuestro proyecto debe seguir ejecutándose si no habría comunicación y la Api no devolvería nada:
12 WEB API REST

Elegimos el servicio REST que queremos hacer, en nuestro caso entraremos con el método GET, y es ahí donde debemos poner nuestra dirección en la que se encuentra alojada nuestra Api y le damos a enviar y vemos que el funcionamiento es correcto
13 WEB API REST
Para nuestra Persona 3, lo mismo:
14 WEB API REST
Referencias del Documento:

Francisco García Serrano, Profesor de Microsoft MCSD

http://www.c-sharpcorner.com/uploadfile/4d9083/how-to-create-web-api-in-asp-net-mvc/

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

https://www.genbetadev.com/formacion/haciendo-una-api-rest-en-1-hora-con-asp-net-web-api-i

 

Descripción: Explicación de como crear una API REST en 3 sencillos pasos, pero sobre todo entender de que nos puede servir una API y como podemos utilizarla

Autor: Sergio Hierro   –    https://es.linkedin.com/in/shierroc   –  https: //twitter.com/Sergio_Hierro

Curso: Microsoft MCSD Web Applications + SharePoint Apps

Centro: Tajamar

Año académico: 2016-2017

This Post Has 4 Comments

  1. Francisco Gonzalez Reply

    ya tenemos como hacer el GET gracias a su ejemplo pero ahora… como se haria un POST sobre el mismo modelo?

    • Cuxa Reply

      Supongo que ya lo sabrás, pero un ejemplo para insertar una ocurrencia del modelo con POST podría ser (en la clase del controlador):

      public void Post([FromBody]Persona value)
      {
      if (this.listapersonas.FirstOrDefault(p => p.IdPersona == value.IdPersona) == null)
      this.listapersonas.Add(value);
      else
      throw new Exception(«Ya existe!»);

      }

  2. J M Cibertec Reply

    Hola, buen tutorial, pero porque en el POSTMAN te arroja Json y en el navegador sale en formato XML.

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.