Consultas de acción con JSON en una WebApi
¡Hola a todos! En este post vamos a ver como realizar consultas de acción sobre un archivo Json.
Las consultas de acción son aquellas que no devuelven ningún registro, es decir las encargadas de añadir registros (Post), de modificar registros (Put) y de eliminar registros (Delete). Los archivos Json (JavaScript Object Notation), es un formato de texto ligero para el intercambio de datos, se usa como alternativa al XML y cada dia se usa más.
Para ver el funcionamiento de las consultas de acción sobre un archivo Json vamos a realizar un pequeño ejemplo y lo vamos a seguir paso a paso.
¡EMPECEMOS!
Lo primero que haremos será abrir VisualStudio y crear un nuevo proyecto de tipo WebApi, llamado ServicioApiColoresJson.
Una vez creado el Web Api vacío, vamos a insertar el archivo Colores.json dentro de una carpeta que vamos a llamar Documentos.
Una vez tengamos el archivo vamos a agregar el paquete NuGet Newtonsoft.json que sera necesario para la lectura y escritura del archivo JSON. Despues de agregar el NuGet vamos a crear una clase Color dentro de la carpeta Models que tendra este aspecto:
Los atributos [JsonProperty(«xxxx»)] sirven para mapear el archivo JSON y adaptarlo a la clase que hemos creado.
Una vez tengamos la clase creada, vamos a crear otra clase llamada ListaColores, también dentro de la carpeta Models, que sera para poder almacenar varios colores.
Una vez creada, vamos a crear la ultima clase, que sera nuestro modelo y lo llamaremos ModeloColores (también sobre la carpeta Models). En esta clase crearemos los metodos que queramos que tengan nuestra API, en este ejemplo vamos a tener 5 metodos, que seran los siguientes:
GetColores → Metodo encargado de mostrar una lista de colores que nos proporcionara el archivo .json
BuscarColor→ Metodo encargado de buscar un color en concreto
var json = File.ReadAllText(this.Path) → leer el archivo que está en la ruta indicada
var jObject = JObject.Parse(json) → Convertir el archivo de texto en formato Json que el entorno pueda entender
JArray colores = (JArray)jObject[«colores»] → Hacer un array de todos los colores dentro del archivo .json
InsertarColor→ Metodo encargado de insertar un nuevo color al archivo .json
ModificarColor→ Metodo encargado de modificar un color ya creado
EliminarColor → Metodo encargado de eliminar un color del archivo .json
ListaColores lista = JsonConvert.DeserializeObject<ListaColores>(json) → Deserializa el archivo Json a un tipo de .NET, en nuestro caso ListaColores
String newjson = JsonConvert.SerializeObject(lista, Formatting.Indented) → Serializa un objeto y lo transforma en Json con un formato indentado
File.WriteAllText(Path, newjson) → Escribe en la ruta indicada (ruta del archivo .json) el String indicado (Nuestro Colores.json modificado)
Una vez tengamos nuestro modelo listo, nos quedará crear la ultima parte y es el controlador. Para crear este controlador haremos click derecho sobre la carpeta de Controllers → Add → Controller y seleccionaremos Web API 2 Controller – Empty. A este archivo lo llamaremos ColoresController y tendra la siguiente estructura:
El metodo CrearModelo() lo llamaremos en los demas metodos para instanciar la clase ModeloColores que hemos creado anteriormente, ya que necesitamos la ruta del archivo .json para poder trabajar con el propio archivo.
En este controlador tambien tendremos los metodos de las consultas de acción que necesitamos (insertar, modificar y eliminar)
Los atributos [Route(«xxx/xxx/{xxx}»)] sirven para mapear la URL del sitio web y redirigir las peticiones a la URL que nosotros indiquemos.
Una vez llegados a este punto nuestra Web API estará lista para usarse, solo falta crear un Cliente para poder visualizar los contenidos que nos devuelva nuestra API. Podemos visualizar desde el navegador ciertas funcionalidades sin necesidad de crear un cliente que consuma la API, pero su funcionalidad seria basicamente las consultas de GetColores() y BuscarColores().
Si quereis ver como es el funcionamiento completo de esta API, os voy a dejar el codigo en este enlace a GitHub para que lo descargueis y podais ver su funcioanmiento real.
Autor/a: Adrián Miguel Blanco
Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin
Centro: Tajamar
Año académico: 2017-2018
Linkedin : Adrian Miguel Blanco
Codigo en GitHub: ServicioApiColoresJson
Hola cómo estás,
Te cuento que hasta aquí lo hago mas o menos del mismo modo y está clarísima tu explicación, ahora me he topado con algo que todavía no pude resolver y aprovecho a preguntarte. La cuestión es: Cómo modificarías este código si quisieras hacer una api de consulta.
Es decir que puedas hacer un get así : …./api/colores?search id in (2,4,6)
o asi : …/api/colores?search color=rojo.
Me explico?
He buscado info para conseguir esto pero no la encontré aún.
Ojala puedas ayudarme.
Desde ya Muchas Gracias!