API REST CON LARAVEL: 3A PARTE; CREAR, Y LISTAR TAREAS.

Sirpyerre Rojas
4 min readMar 27, 2022
API REST CON LARAVEL

En esta tercera entrega de Creando un CRUD con Laravel 9, vamos a crear los endpoints para crear y editar tareas.

Crear una nueva tarea

Primero que nada en el modelo Task vamos a agregar lo siguiente dentro de la clase (app/Models/Task.php):

protected $fillable = ["title", "description"];

Quedando de la siguiente forma nuestro archivo Task.php:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
use HasFactory;

protected $fillable = ["title", "description"];
}

A continuación, en el controller vamos a agregar el siguiente código para agregar una task:

public function create(Request $request)
{
$request->validate([
'title' => 'required|max:20|min:3'
]);
Task::create([
'title' => $request->title,
'description' => $request->description
]);
return response()->json(['message' => 'Your todo was created']);
}

El método create()recibe un objeto de tipo Request que es donde viene la información para crear la tarea. La instancia Illuminate\\Http\\Request proporciona una variedad de métodos para examinar la solicitud HTTP entrante.

A continuación validamos la solicitud proporcionada por el usuario, la regla de validación required le indica al validador que el campo título es requerido, que admite 20 caracteres como máximo de longitud y como mínimo 3 caracteres.

Si pasa la validación, entonces creamos la tarea con los campos title y description, los campos de fecha created_aty updated_atson automáticamente seteados por el framework.

Por último regresamos la respuesta en formato JSON con el mensaje: Your todo was created

Así podemos hacer la petición en postman por medio del method POST:

Create a new task

Como puedes ver, postman nos regresa la respuesta especificada con un código de status 200, que nos indica que la tarea fue creada satisfactoriamente.

Si por algún motivo no pasa la validación podemos ver el siguiente mensaje:

Validation errors

La respuesta en el postman nos muestra que el proceso de creación de una nueva tarea no paso las reglas de validación ya que el texto es muy largo; solo admite 20 caracteres de longitud. Y el código de estado es un 422 que nos indica que hubo un error.

Códigos de estado de respuesta HTTP

Los códigos de respuesta HTTP, nos indican que una petición se ha completado. Las respuestas se agrupan en cinco clases:

1. Respuestas informativas (100–199),
2. Respuestas satisfactorias (200–299),
3. Redirecciones (300–399),
4. Errores de los clientes (400–499),
5. Errores de los servidores (500–599).

Listar todas las tareas

En el archivo TaskController vamos a crear la acción all() ( )para listar todas las tareas. Agregamos el siguiente código:

public function all(Request $request)
{
$tasks = Task::all();

return response()->json(['tasks' => $tasks]);
}

El método estatico de eloquentall() recupera todas las tareas que existen en la base de datos y las coloca en la variable $tasks. A continuación la acción regresa un objeto json con todas las tareas.

En el postman puedes ver la respuesta de este endPoint:

Get all tasks

Obtener una tarea

Para obtener una tarea en la ruta /tasks/{id} nos indica que acepta un id como parametro.

En el controlador agregamos el siguiente código:

public function getTask(Request $request, int $id)
{
$task = Task::find($id);
if (is_null($task)) {
return response()->json('Data not found', 404);
}
return response()->json($task);
}

El método getTask() recibe dos argumentos $requestde tipo Illuminate\\Http\\Requeste $id de tipo entero (int). Desde PHP 7.4 ya se puede agregar el tipo de dato a argumentos de función, valores de retorno y a las propiedades de las clases.

Si el registro no se encuentra regresa como repuesta un código de estado 404 con el mensaje Data not found ; por el contrario si la tasks existe en la base de datos entonces regresa un objeto JSON con los datos de la tarea.

Get a specifid task

Es todo por ahora, en la cuarta parte vamos a implementar la opción de marcarla como completada una tarea, así como editarla y vamos a eliminar una tarea y con eso terminamos.

Si te es util este tutorial por favor compartelo.

Saludos y happy coding :)

--

--

Sirpyerre Rojas

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