Crea tu propia API con WCF Restful Service [C#]

Que tal!, ahora vengo de nuevo escribiendo buenos tutoriales como siempre!. En esta ocasión vamos a intentar crear una API para las aplicaciones que tengan las posibilidades de ofrecer servicios a aplicaciones de otros desarrolladores.

Primero que nada, debemos de tener Visual Studio 2010 (o en dado caso las versiones express). Para los que no tengan este software y son estudiantes, traten de registrarse en DreamSpark si es que tienen un correo que tenga dominio .edu.tuPais, si tienen un correo pueden registrarse en DreamSpark y bajar un sin fin de software para desarrollo.

En fin, comencemos.

Crear el proyecto

Para empezar crearemos un nuevo proyecto en Visual Studio

image

Y tendremos una solución por default

image

Definir y crear nuestro servicio WCF Restful

Como ven, en nuestro explorador de soluciones tenemos ya un servicio creado por default, tengamos libertad en borrarlo y crear uno nuevo:

image

Una vez creado, nos creará una clase y una interfaz. En la interfaz como todos ustedes sabrán, definiremos nuestros métodos que serán implementados en la clase que utiliza dicha interfaz

En la interfaz (en mi caso llamada IMyAwesomeService LOL) tenemos un método por default llamado DoWork, lo borramos porque mas delante agregaremos los dos métodos.

Primero que nada tenemos que crear nuestra clase o modelo de los datos que queremos enviar a través de la API. En este caso es una clase llamada User.

image

Tenemos la clase con tres propiedades… sencillo Sonrisa

Ahora, vamos a crear dos métodos en la interfaz IMyAwesomeService que se implementaran en la clase MyAwesomeService

image

Si ya has trabajado con WCF te darás cuenta que no hay nada nuevo aquí. Debemos de agregar propiedades adicionales a los métodos para que funcione de una manera mas estilo a una API, o sea, crear un WebService Restful.

image

image

Ahora lo que hemos hecho es agregar la propiedad WebInvoke a cada método para definir un comportamiento diferente. En ShowJson hemos establecido que será un método que se podrá invocar desde el URL, o sea un servicio Restful. También se agregó el template de la URL en el que podrá ser invocado. Se ha hecho lo mismo en el método ShowXml pero este mostrará su resultado en Xml.

Ahora vamos a implementar los métodos que se declararon en la interfaz, nos vamos a la clase MyAwesomeService y lo dejaremos de esta forma:

image

Primero que nada, estamos haciendo un listado de User con datos Dummy, estos datos seguramente los tendrás que obtener de una base de datos o algún otro recurso. Los metodos ShowJson y ShowXml son los métodos definidos en la interfaz y el método privado GetUsersByName es solo la simulación de datos reales, lo único que hace es buscar un usuario por nombre.

Para poder terminar con esto, tenemos que cambiar la configuración en el Web.config

Configuración por default:

image

Primero que nada, tenemos que agregar un endPoint de nuestro servicio WCF, esto lo agregamos dentro de <system.serviceModel>

image

Aqui es importante la propiedad contract en la etiqueta endpoint. Allí debemos de poner tal cual es nuestro namespace y clase de nuestro servicio, si lo nombraron igual que yo, no hay problema.

Como ven hemos agregado un behaviorConfiguration, eso no sale de la nada, tenemos que agregarla también. Anteriormente vimos que ya existia una etiqueta <behavior> dentro de <serviceBehaviors> a la ya existente simplemente le pondremos un nombre

image

Y para finalizar con la configuración, tenemos que habilitar el metodo GET de http

image

Ahora sí! a correr nuestro servicio!

Seleccionamos el archivo .svc y con clic derecho lo previsualizamos en el navegador (o con  Ctrl + Shift + W) y nos saldrá la ventana por default del servicio.

Podremos ver en funcionamiento el servicio WCF si ingresamos la URL del template que definimos en la interfaz

JSON-> image

XML –> image

Consumir nuestro WebService

Las formas de consumirlo pueden ser muy variadas, ya que al ser un WebService Restful no importa el lenguaje de programación. Si lo deseamos consumir desde C# podemos usar el metodo con XML (suponga que no tenemos acceso a las clases User ni nada, será un metodo totalmente Resftul y no SOAP).

Crearemos una nueva pagina aspx llamada Default y agregamos un TextBox y un Button

image

Creamos un evento Clic en el boton y consumiremos nuestro WebService utilizando WebClient de C#

image

Y el resultado será:

image

Si quieres saber como hacerlo desde JavaScript, consulta este post https://balusoft.wordpress.com/2012/09/02/consumir-un-webservice-con-jquery-ajax-y-asp-net/. Claro que al hacerlo desde Javascript lo mejor será utilizar el metodo que devuelve el resultado en JSON.

Esto fue todo saludos!

Anuncios

4 comentarios sobre “Crea tu propia API con WCF Restful Service [C#]

  1. Muy Buena Guia pero lamentablemente en la parte de crear el Cliente no me reconoce WebClient uso VS2013 pero me dice que no existe en el contexto actual

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s