Usar un servicio web API Rest con C# (CSHARP)

Ya no es ninguna novedad, el uso de servicio web API Rest en nuestra aplicaciones es superútil , porque nos permite “desconectar” el código de gestión de una aplicación de su presentación al usuario lo que se conoce como frontend.

Antes de nada, debes saber que un servicio REST  Representational State Transfer o Transferencia de Estado Representacional en españoles un protocolo HTTP para la comunicación entre sistemas. Los sistemas que siguen los principios REST se llaman con frecuencia RESTful.

Antes de entrar en detalle de como usar un servicio web API Rest con C# debemos de tener una base mínimo.

Fundamentos de RESTservicio web API Rest

  • Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, no son permitidas por REST)
  • Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP en sí define un conjunto pequeño de operaciones, las más importantes son POST, GET, PUT y DELETE. Con frecuencia estas operaciones se equiparan a las operaciones CRUD en bases de datos (ABMC en castellano: crear,leer,actualizar,borrar) que se requieren para la persistencia de datos, aunque POST no encaja exactamente en este esquema.
  • Una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es de doble dirección únicamente a través de su URI.
  • El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado en un sistema REST es JSON. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.

JSON vs XML

JSON (se pronuncia YAISON) es el acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript aunque hoy, debido a su amplia adopción como alternativa a XML, se considera un formato de lenguaje independiente.

Es posible que os preguntéis porque se ha instaurado como alternativa a XML, pues por dos razones de peso, estructura más simple de usar y leer para un ser humano y el otro punto fuerte es que se reduce el trafico de datos, puesto que un archivo JSON tiene este formato:

{
   "departamento":8,"nombredpto":"Ventas",
   "director": "juan rodriguez",
   "empleados":[
      {
         "nombre":"Pedro",
         "apellido":"Fernández"
      },
      {
         "nombre":"Jacinto",
         "apellido":"Benavente"
      }]
}

Esto mismo en XML sería algo así:

<empresa>
  <departamento>
    <id>8</id>
    <nombredpto>Ventas</nombredpto>
    <director> juan rodriguez</director>
    <empleados>
       <empleado nombre="Pedro" apellido="Fenández">
       <empleado nombre="Jacinto" apellido="Benamente">
    </empleados>				
  </departamento>
</empresa>

Acceder a un servicio web API Rest con C#

 

Una vez ya tenemos más o menos claro que es un servicio web API Rest y que elementos tiene, os voy a enseñar lo fácil que es consumir desde C#.

Lo primero que debemos tener es una URL de un servicio para poder tener acceso a datos JSON, vamos a usar el que tenéis disponible aquí http://jsonplaceholder.typicode.com/posts en esto nos devolverá un total de 100 registros de ejemplo.

string sUrlRequest = "http://jsonplaceholder.typicode.com/posts";

Ahora que ya tenemos nuestra URL para hacer un request de un servicio web API Rest vamos a necesitar hacer un tratamiento sobre los datos devueltos en formato JSON y descargarlos, veréis que fácil.

var json = new WebClient().DownloadString(sUrlRequest);

JavaScriptSerializer ser = new JavaScriptSerializer();

Para poder usar el objeto JavaScriptSerializer debéis añadir a vuestra lista de using el System.Web.Script.Serialization.

Y ahora debemos de transformar el archivo JSON a un objeto, para que nos sea fácil manipularlo. Lo podéis hacer desgranando el JSON por vosotros mismo, pero en ocasiones puede ser un poco lío, yo suelo usar una página muy simple que me lo da directamente. Copiamos el archivo JSON que queremos traspasar a clase y el resultado será esto:

public class RootObject
{
    public int userId { get; set; }
    public int id { get; set; }
    public string title { get; set; }
    public string body { get; set; }
}

Vamos a renombrar el nombre de la clase para que sea más descriptiva a UsuarioEjemplo.

public class UsuarioEjemplo
{
    public int userId { get; set; }
    public int id { get; set; }
    public string title { get; set; }
    public string body { get; set; }
}

Vale ahora ya podemos transformar deseralizar nuestro JSON a una clase así:

UsuarioEjemplo ueUsuario = ser.Deserialize<UsuarioEjemplo>(json);

Y ya está, ya hacemos lo que queramos con nuestro objeto ueUsuario, meterlo en un DataTable, guardarlo en una base datos según los datos que tenga, usarlo para complementar otra clase, etc. El límite lo pondrá nuestra imaginación.

api-rest-con-c

7 comentarios en “Usar un servicio web API Rest con C# (CSHARP)

  1. Hola, en relación a Acceder a un servicio web API Rest con C#
    mi consulta es:
    ¿Como lo harías para consumir un servicio enviando parámetros a la web API desde C#?

  2. hola! No puedo agregar en mi proyecto el System.Web.Script.Serialization. no me aparece en ningún sitio, estoy usando vs2017 la versión gratuita. ?¿puedes ayudarme?

Deja un comentario