Bienvenidos a todos a este post en el que explicare de forma sencilla y rápida como crear un web-api, tengas o no experiencia en este lenguaje veras que es sencillo montar una siguiendo los siguientes pasos, a parte de aprender a crearla este post también te ayudara a comprender el funcionamiento interno de estas.

¿Que es una Web Api?

Antes de ponernos a explicar como crear la Web Api voy a explicar en una solo frase lo que es ina Api:Una Web Api es una interfaz de programacion que contine un conjunto de rutinas que nos devuelve datos tanto en formato JSON o formato XML

Lo primero de todo iniciaremos Visual Studio y seleccionaremos file/new Proyect, desplegaremos Visual C# y buscaremos dentro de web Aplication web ASP.net(NET FRAMEWORK) y llamaremos el proyecto como queramos.

img01
creacion del proyecto

Ahora en la siguiente ventana le indicaremos empty y marcaremos con un check Web Api

img02
creacion proyecto web api


Despues crearemos en la carpeta Models la clase coche de la que sacaremos los datos cada coche dichos objetos tendrán un ID especifico ya que la api a parte de tener un método mediante en el cual indiquemos el id a buscar y nos tendrá que devolver dicho objeto

img03
creacion clase coche
img04
objeto coche

Lo siguiente que aremos será crear un fichero donde guardaremos el repositorio que accederá al modelo y tendrá los métodos de búsqueda.

img05
fichero de repositorios

El porque de crear esta clase es por la simple razon de no acceder al modelo ni crearlos en el controlador, en este tutorial perfectamente podriamos saltarnos este paso ya que los objetos los crearemos a mano pero no nos lo pordriamos saltar si los datos los obtuvieramos de una  BBDD (Base de Datos). En nuestro caso a esta clase la llamaremos RepositoryCoche la cual tendrá una lista de Coches que rellenaremos en el constructor, un método que nos devolverá toda la lista y otro que nos devolverá uno en específico. 

img06
nombre del repositorio
img07
metodos del repositorio

Creación del controlador

Despues de realizar todos los pasos , crearemos la información que queremos mostrar solo nos queda crear el controlador que nos devolverá dichos datos, es decir llegamos al meollo de la cuestión, primero nos posicionaremos en la carpeta Controllers que por defecto crea el proyecto y añadiremos una clase de tipo controller, se nos desplegara un menú en el que nos dará a elegir entre varios tipos de controllers pero el que nos importa es el que pone Web API Empty

img08
creacion control
img09
elección tipo de control

En este lugar (Controlador) llamaremos al repositorio que nos va a dar los datos para que podamos mostrárselos al usuario.

img10
metodos del control

Por ultimo nos dirigiremos al navegador ha hacer la prueba final, nos saltara una excepción ya que por defecto intentara buscar la vista Home/Index pero para ver si de verdad nos devuelve datos tenemos que escribir después del puerto en nuestro caso /api/Coche y /api/Coche/1

img11
devolucion datos sin buscar
img12
busqueda de un objeto especifico

Cambio del formato

Perfecto la  api ya es funcional pero me gustaría compartir un trozo de código que le dará más vida a vuestras futuras Web Apis y es la capacidad de indicarlas que tipo de datos nos devolverá ya que pueden darnos tanto XML como JSON, en nuestro caso le pediremos que nos devuelva en formato JSON, para ello nos dirigiremos al Global.asax  y escribiremos la siguiente línea: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear()  y ya estaría, y si se quisiera solo XML en la línea de arriba cambiaríamos XmlFormatter por JsonFormatter.

img13
cambio formato de salida

Autor/a: Sergio Bárcena

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

Centro: Tajamar

Año académico: 2018-2019

Código / recursos utilizados / Otros datos de interés: https://github.com/SergioBMBP/Web-api

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.