API CRUD de Laravel con validación

api crud

Laravel API CRUD con validación

API CRUD — CRUD se refiere a las operaciones de creación, lectura, actualización y eliminación. Siga las instrucciones a continuación para crear una aplicación CRUD de laravel.

Inicialmente vamos a crear un proyecto laravel,

composer create-project laravel/laravel --prefer-dist laravelcrud

Necesitamos actualizar los detalles de nuestra base de datos en el archivo .env para la conectividad de la base de datos. Aquí voy a usar la base de datos Mysql. Así que estoy proporcionando los detalles necesarios para conectar la base de datos.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravelcrud
DB_USERNAME=root
DB_PASSWORD=your_password

En este artículo, para realizar la operación CRUD, solo vamos a crear, leer, actualizar y eliminar productos.

Ahora necesitamos crear un controlador, un modelo y una migración para continuar con la operación CRUD. El siguiente comando creará los 3 (controlador, modelo y migración) para la operación crud. En el controlador se le proporcionarán todas las funciones que facilitan su trabajo. Por ejemplo, habrá una función llamada almacenar que se puede usar para crear un registro, etc.

php artisan make:model Products -mcr

El archivo de migración que se ha creado estará disponible en /database/migrations/migrationfilename.php. El archivo de migración debe actualizarse con los campos que se necesitan replicar en la tabla de la base de datos.

Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('product_name')->unique();
$table->string('sku_id')->unique();
$table->string('hsn_code')->nullable();
$table->float('cost_price')->nullable();
$table->float('tax')->nullable();
$table->float('cess_extra')->nullable();
$table->float('sales_price');
$table->timestamps();
});

Luego, debemos migrar para crear las tablas de la base de datos que se necesitan para realizar las operaciones CRUD.

php artisan migrate

Una vez finalizada la migración podrás ver las tablas creadas en tu base de datos. Ya que hemos completado con la creación de base de datos, creación modal y creación de controlador. Pasaremos a las operaciones CRUD reales.

En laravel, siempre las lógicas comerciales estarán escritas en los controladores. Puede encontrar el controlador dentro de app/Http/Controllers/ProductsController.php

Siga los procedimientos a continuación para crear, leer, actualizar y eliminar el registro.

Antes de escribir toda la funcionalidad en las funciones CRUD, necesitamos usar el validador en laravel. Úselo en la parte superior del archivo ProductsController.php.

use Validator;

Crear:

Para crear un registro en la base de datos, se puede utilizar la función de almacenamiento.

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $rules=array(
        'product_name' => 'required|unique:products',
        'sku_id' => 'required|unique:products',
        'sales_price' => 'required|numeric'
    );
    $messages=array(
        'product_name.required' => 'Please enter a product name.',
        'product_name.unique' => 'Product name should be unique.',
        'sku_id.required' => 'Please enter a sku id.',
        'sku_id.unique' => 'SKU Id should be unique.',
        'sales_price.required' => 'Please enter a sales price.',
        'sales_price.numeric' => 'Sales price must be a number'
    );
    $validator=Validator::make($request->all(),$rules,$messages);
    if($validator->fails())
    {
        $messages=$validator->messages();
        return response()->json(["messages"=>$messages], 500);
    }$products = new Products;
    $products->product_name = $request->product_name;
    $products->sku_id = $request->sku_id;
    $products->hsn_code = $request->hsn_code;
    $products->cost_price = $request->cost_price;
    $products->tax = $request->tax;
    $products->cess_extra = $request->cess_extra;
    $products->sales_price = $request->sales_price;
    $products->save();
    return response()->json(["product" => $products, "message"=>"Product has been created successfully"], 200);
}

Leer:

Para leer una lista de registros de la base de datos, se puede usar la función de índice.

/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$products = Products::get();
return response()->json(["products" => $products], 200);
}

Si se necesita recuperar un registro en particular. Se puede usar el siguiente código,

/**
* Display the specified resource.
*
* @param \App\Models\Products $products
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$product = Products::find($id);
return response()::json(["product"=>$product]);
}

Actualizar:

Para actualizar el registro ya creado, se puede usar el siguiente código,

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \App\Models\Products  $products
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $rules=array(
        'product_name' => 'required|unique:products',
        'sku_id' => 'required|unique:products',
        'sales_price' => 'required|numeric'
    );
    $messages=array(
        'product_name.required' => 'Please enter a product name.',
        'product_name.unique' => 'Product name should be unique.',
        'sku_id.required' => 'Please enter a sku id.',
        'sku_id.unique' => 'SKU Id should be unique.',
        'sales_price.required' => 'Please enter a sales price.',
        'sales_price.numeric' => 'Sales price must be a number'
    );
    $validator=Validator::make($request->all(),$rules,$messages);
    if($validator->fails())
    {
        $messages=$validator->messages();
        return response()->json(["messages"=>$messages], 500);
    }$products = Products::find($id);
    $products->product_name = $request->product_name;
    $products->sku_id = $request->sku_id;
    $products->hsn_code = $request->hsn_code;
    $products->cost_price = $request->cost_price;
    $products->tax = $request->tax;
    $products->cess_extra = $request->cess_extra;
    $products->sales_price = $request->sales_price;
    $products->save();
    return response()->json(["product" => $products, "message"=>"Product has been updated successfully"], 200);
}

Borrar:

La función destroy se puede utilizar para eliminar un dato particular de la base de datos.

/**
* Remove the specified resource from storage.
*
* @param \App\Models\Products $products
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$product = Products::destroy($id);
return response()->json(["message" => "Product has been deleted successfully"]);
}

Después de escribir todas las funciones, necesitamos crear una ‘ruta’ para acceder a ella como una url. Todas las rutas deben configurarse en el api.php para acceder a él como una API.

use App\Http\Controllers\ProductsController;

Route::resource('products', ProductsController::class);

Use cartero para verificar las apis creadas. No olvide enviar datos a través de datos sin procesar solo para la solicitud PUT.


¡¡¡Eso es todo!!! Ha creado una aplicación CRUD.

Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel:

Recent Post