Saltar a contenido

Métodos personalizados

Nada nos impide que nos salgamos del flujo establecido de Laravel, es más seguramente en algún momento de tu vida como desarrollador te pedirán algo más personalizado para una integración específica. En estos casos, necesitas conocer la manera de hacerlo y, hablando de API, nos tocará modificar el controlador y el fichero api.php para la ruta.

Modificando el controlador

En este apartado, debes programar lo que se te solicite, pero en nuestro caso vamos a listar todas las categorías (recuerda que el controlador hemos paginado la función index()).

public function all()
{
    return response()->json(Category::get());
}

Creamos un método que nos devuelve todas las categorías.

Modificando api.php

En este fichero hay una peculiaridad, y es que actúa, salvando las distancias, bajo la premisa FIFO1, es por ello que deberás colocar primero las reglas específicas y después las genéricas. Te dejo un ejemplo de cómo sería en este caso:

Route::get('category/all', [CategoryController::class, 'all']);
Route::resource('category', CategoryController::class)->except(['create', 'edit']);

Si lo hiciéramos al revés no nos dejaría hacer uso de nuestro método personalizado ya que trataría de buscar "all" en la base de datos.

Actividades

  • 📝 AC 810. (RA7 / CE7e CE7f CE7g / IC1 / 3p) - En el proyecto de la lista de tareas, haz posible el listado de todas las tareas.

  • 🧪 PR 811. (RA7 / CE7e CE7f CE7g CE7h / IC2 / 5p) - El CTO te pide que puedas listar todos los productos vía API. Además has de adaptar la API para que se puedan consumir todos los pedidos realizados.

  • 🔬 AP 812. (RA7 / CE7e CE7f CE7g CE7h / IC2 / 5p) - El CTO te pide que puedas listar para un cliente, todos sus pedidos.


  1. First In First Out. Metodología de listas en las que atiende primero a la solicitud que llegue primero.