Operaciones Put y Delete desde mi Web API

16/17

Lectura

Despu茅s de continuar con las operaciones de consulta por par谩metros y la de inserci贸n, es momento de que vayas por las dos operaciones restantes. 驴Comenzamos?
Operaci贸n Put
Acabo de insertar un nuevo registro gracias a mi operaci贸n de inserci贸n. Puse un registro as铆.
Blanco1.png
Como ver谩s, hubo un error en los campos, el nombre y apellido del contacto est谩n mal as铆 que debemos modificarlo. Vuelve a tu proyecto y buscar tu m茅todo Put en la clase ContactController.cs. y agrega lo siguiente.

[HttpPut("{id}")]
        public void Put(int id, [FromBody] Contacts value)
        {
            Contacts updatedContact = value;
            var selectedElement = contactsContext.ContactSet.Find(updatedContact.Identificador);
            selectedElement.Nombre = value.Nombre;
            selectedElement.Email = value.Email;
            contactsContext.SaveChanges();
        }

Lo primero que necesitas es obtener el contacto, igual que en el m茅todo de inserci贸n, solo que ahora, podr谩s obtener este contacto de tu base para que primero sepas cu谩l ser谩 el dato que vas a modificar. Cambia las propiedades que quieres modificar, puedes hacerlo a tu gusto. Solo que despu茅s de eso debes guardar los cambios.
Corre tu aplicaci贸n (ya sabes, dotnet run) y despu茅s de eso ve a Postman, inserta un JSON parecido a esto.
{
鈥渋dentificador鈥: 1,
鈥渘ombre鈥: 鈥淎min Espinoza鈥,
鈥渆mail鈥: "[email protected]",
鈥渢elefono鈥: 鈥5543507148鈥
}
O con los cambios que te acomoden y cambia la operaci贸n a PUT.
blanco2.png
Los pasos a seguir son muy parecidos a los de la inserci贸n. En esta secuencia de pasos se trata de:
1.- Cambiar la operaci贸n por PUT, ten much铆simo cuidado en ver la URL. 驴Notaste que el identificador del elemento que quiero modificar se encuentra al final de la cadena? A mi me tom贸 como dos d铆as darme cuenta de eso la primera vez que lo hice. Lo peor es que si no lo haces nada te indicar谩 donde est谩 el error.
2.- Selecciona la opci贸n de Body y en la categor铆a raw puedes comenzar a escribir.
3.- Escribe en formato JSON el identificador que vas a buscar y adem谩s los campos que vas a modificar.
Si realizas la operaci贸n de la manera adecuada obtendr谩s un 200 OK en Postman.
Holis.png
Y podr谩s ver el resultado en tu base de datos.
Holis2.png
blanco3.png
Ya llevamos tres cuartos de felicidad 驴no?

Operaci贸n DELETE

En esta operaci贸n podemos trabajar para eliminar los registros. La idea es borrar el registro que acabamos de crear y de nuevo nos vamos a apoyar en el identificador. Como siempre en esta vida, nos tardamos mucho en construir y eliminar nos toma muy poco tiempo y adem谩s resulta ser el m茅todo m谩s f谩cil de todos.
De vuelta a tu proyecto, col贸cate en el m茅todo DELETE de tu aplicaci贸n y agrega lo siguiente.

        public void Delete(int id)
        {
            var selectedElement = contactsContext.ContactSet.Find(id);
            contactsContext.ContactSet.Remove(selectedElement);
            contactsContext.SaveChanges();
        }

Como ver谩s, no hay mucho que decir 驴o s铆? Simplemente tomas tu identificador recibido, buscas el elemento que tiene ese identificador y lo borras, si, as铆 de f谩cil las cosas se van.
Prueba tu m茅todo en Postman, ahora no necesitas enviar nada m谩s que el id en tu URL (igual que en los m茅todos anteriores) y estar谩s listo.
blanco4.png
Muy bien, pues ahora solo basta publicar de nuevo la aplicaci贸n para que puedas tener todos tus m茅todos listos para empezar a gestionar tus contactos.
驴Qu茅 operaciones adicionales crees que puedes hacer con estas cuatro? 隆No olvides comentarlas!

Aportes 5

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Es bien sencillo programar y pasar tu codigo a Azure es un punto a tomar en cuenta para desarrollos nuevos

[HttpPut ("{id}")]
public ActionResult Put (int id, [FromBody] contacts model)
{
      var data = context.Contacts.Find (id);
      context.Entry(data).State = EntityState.Modified;
      data.Nombre = model.Nombre;
      data.email = model.email;
      data.telefono = model.telefono;
      context.SaveChanges ();
      return Ok ("Editado correctamente!");
}

// DELETE api/values/5
[HttpDelete ("{id}")]
public ActionResult Delete (int id) 
{
     var data = context.Contacts.Find (id);
     context.Remove(data);
     context.SaveChanges ();
      return Ok ("Eliminado correctamente!");
}

Creo que hay un error en la parte de Put
Muestra este c贸digo:

var selectedElement = contactsContext.ContactSet.Find(updatedContact.Identificador);

Pero en realidad este es el que funciona:

var selectedElement = contactsContext.ContactSet.Find(id);

Si no les funciona el metodo delete, seguramente no agregaron [HttpDelete("{id}")] antes del m茅todo

Los invito a CD con github