API REST CON LARAVEL: 4A PARTE; EDITAR Y ELIMINAR TAREAS.

Sirpyerre Rojas
4 min readApr 2, 2022
Laravel API

Han sido días muy ocupados en el trabajo estoy desarrollando una API tipo repositorio de información; estoy ocupando Mezzio (expresive), Mongodb y Doctrine.

En mi vida personal si que han sido días intensos por repercusiones de que me hicieron la vasectomía y soy de los pocos que si tuvieron problemas. Luego les cuento más de esto, que no es como lo pintan.

Es hora de continuar con este tutorial.

Editar tarea

La acción de editar una tarea es muy similar a la de crear, en el controlador agregamos lo siguiente:

public function edit(Request $request, int $id)
{
$task = Task::find($id);
if (is_null($task)) {
return response()->json('Data not found', 404);
}
$validate = $request->validate([
'title' => 'required|max:20'
]);
$task->title = $request->title;
$task->description = $request->description;
$task->save();
return response()->json(['Task updated successfully.']);
}

Lo primero que hacemos es buscar la tarea con el $id especificado mediante el método find(), sino lo se encuentra regresa el mensaje Data not found con código de estado 404. En cambio si la variable $task esta seteada quiere decir que si se encontró la tarea, a continuación validamos que el titulo venga especificado y que al menos tenga 20 caracteres de longitud. A continuación seteamos las propiedades de la task title y description con los datos del usuario que vienen por medio del objeto $request y con el método save()actualizamos los datos especificados; cabe mencionar que también el campo update_ates actualizado por laravel automáticamente. Y por último regresamos como respuesta el mensaje Task uddated successfully , indicando que se ha actualizado correctamente.

En el postman hacemos la petición por medio del method PUT como se ve en la imagen:

update task

Marcar tarea como completada

Para esta tarea vamos a ocupar la ruta /tasks/completed/{id}, vamos agregar un nuevo método que corresponde a la acción de marcar una tarea como completada, en nuestro controller agregamos lo siguiente:

public function completed(Request $request, $id)
{
$task = Task::find($id);
if (is_null($task)) {
return response()->json('Data not found', 404);
}
$task->completed =1;
$task->save();
return response()->json(['Your task was marked like completed']);
}

Este método se parece mucho a la acción de editar una tarea. Una vez que hemos encontrado la task lo que hacemos es setear la propiedad completed a 1; indicando que se ha completado la task, a continuación guardamos los cambios en la base de datos con el método save() y por último regresamos como respuesta el mensaje Your task was marked like completed , indicando que se ha actualizado correctamente.

Podemos ejecutar en el postman el endpoint con el method PUT:

complet task

Eliminar tarea

La última acción en este sencillo CRUD es la de eliminar una tarea. Mediante la ruta /tasks/{id}que es igual a la ruta de obtener y actualizar una tarea pero con la diferencia que la petición a la ruta se hace por el método DELETE de HTTP.

Vamos a crear una nueva acción dentro de nuestro controller, como sigue:

public function delete(Request $request, $id)
{
$task = Task::find($id);
if (is_null($task)) {
return response()->json('Data not found', 404);
}
$task->delete(); return response()->json(['Task deleted successfully.']);
}

Como en las acciones de obtener y actualizar una tarea, la acción recibe un $id para buscar la tarea que queremos eliminar, a continuación, simplemente si encontramos la tarea procedemos a eliminarla y por último regresamos como mensaje Task deleted successfully.

En el postman podemos realizar la petición como sigue:

delete task

--

--

Sirpyerre Rojas

Desarrollador backend apasionado, especializado en Go y PHP. Siempre intentando mejorar mi código. Disfruto pasar tiempo con mi esposa e hijos.