SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH SPECIAL OFFER: ENJOY 3 MONTHS OF SHOPIFY FOR $1/MONTH

Laravel API postman

This is an example of adding username in laravel using postman

First, Install laravel project

composer create-project laravel/laravel laravelapitest

You can use valet on windows by following the instructions in the article above

After installing laravel successfully, continue to follow the instructions below

create folder Api\V1 in app\Http\Controllers then create file where UserController.php

This is the controller used for adding, editing, deleting and searching

<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use App\Filters\V1\UserFilter;
use App\Http\Resources\V1\UserCollection;
use App\Http\Resources\V1\UserResource;
use App\Http\Requests\UpdateUserRequest;


class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $filter = new UserFilter();
        $filterItems = $filter->transform($request); //['column', 'operator', 'value']
        $user = User::where($filterItems);
        return new UserCollection($user->paginate()->appends($request->query()));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if(!filter_var($request->email, FILTER_VALIDATE_EMAIL)) return [ 'message' =>  __("$request->email is not a valid email address")];

        $form = [];
        foreach($request->all() as $key => $value){
            if($key == 'password'){
                $form[$key] =  $value;
            }else{
                $form[$key] = $value;
            }
        }

        foreach(User::all() as $user){
            if($user->email == $request->email){
                return response()->json([
                    'error' => true,
                    'message' => 'Email already exists, please check your email again'
                ], 200);
            }
        }
        $user = User::create($form);
        return new UserResource($user);

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(User $user)
    {
        return new UserResource($user);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(UpdateUserRequest $request, User $user)
    {
        // $user->
        return $user->update($request->all());
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(User $user)
    {
        return $user->delete();
    }
}

then create folder Requests and Resources\V1 in app\Http

Add UpdateUserRequest.php file in app\Http\Requests

Create a request update handler for previously created users

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UpdateUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $method = $this->method();
        if($method == 'PUT'){
            return [
                'name' => ['required'],
                'email' => ['required', 'email'],
                'password' => ['required'],
                'purchase_code' => ['required'],
                'url_site' => ['required'],
                'email_verified_at' => ['date_format:Y-m-d H:i:s','nullable'],
            ];
        }else{
            return [
                'name' => ['sometimes','required'],
                'email' => ['sometimes','required', 'email'],
                'password' => ['sometimes','required'],
            ];
        }

    }

}

add file UserCollection.php and UserResource.php in file in app\Http\Resources\V1

add code file UserCollection.php Create a JSON array for the data retrieved in the data table

<?php

namespace App\Http\Resources\V1;

use Illuminate\Http\Resources\Json\ResourceCollection;

class UserCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

add code file UserResource.php . This file handles the display before and after the new user is saved

<?php

namespace App\Http\Resources\V1;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
     */
    public function toArray($request)
    {
        // return parent::toArray($request);
        return [
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'password' => $this->password
        ];
    }
}

Create folder Filters\V1 in app\

add file ApiFilter.php in app\Filters query search handler: example http://laravelaptest.test/api/v1/user?id[eq]=1

then an array will be processed and displayed as JSON if the user has the corresponding id

<?php

namespace App\Filters;


use Illuminate\Http\Request;

class ApiFilter
{
    protected $safeParms = [];

    protected $columnMap = [];

    protected $operatorMap = [];

    public function transform(Request $request){
        $eloQuery = [];
        foreach($this->safeParms as $parm => $operators){
            $query = $request->query($parm);
            if(!isset($query)){
                continue;
            }

            $column = $this->columnMap[$parm] ?? $parm;

            foreach($operators as $operator){
                if(isset($query[$operator])){
                    $eloQuery[] = [$column, $this->operatorMap[$operator], $query[$operator]];
                }
            }
        }
        return $eloQuery;
    }

}

add file UserFilter.php in app\Filters\V1

<?php

namespace App\Filters\V1;

use App\Filters\ApiFilter;
use Illuminate\Http\Request;

class UserFilter extends ApiFilter
{
    protected $safeParms = [
        'id'   => ['eq'],
        'name' => ['eq'],
        'email' => ['eq'],
        'password' => ['eq'],
        'email_verified_at' => ['eq', 'lt', 'gt', 'lte', 'gte'],
        'created_at' => ['eq', 'lt', 'gt', 'lte', 'gte'],
        'updated_at' => ['eq', 'lt', 'gt', 'lte', 'gte'],
    ];

    protected $columnMap = [
        'email_verified_at' => 'email_verified_at',
        'created_at' => 'created_at',
        'updated_at' => 'updated_at',
    ];

    protected $operatorMap = [
        'eq'    =>  '=',
        'lt'    =>  '<',
        'lte'    =>  '<=',
        'gt'    =>  '>',
        'gte'    =>  '>=',
    ];
}

The structure of files and folders added earlier

Then add this code to the file routes\api.php

Route::group(['prefix' => 'api/v1/user'], function(){
    Route::get('/', [\App\Http\Controllers\Api\V1\UserController::class, 'index']);
    Route::post('/', [\App\Http\Controllers\Api\V1\UserController::class, 'store']);
    Route::get('/delete/{id}', [\App\Http\Controllers\Api\V1\UserController::class, 'destroy']);
    Route::post('/update/{id}', [\App\Http\Controllers\Api\V1\UserController::class, 'update']);
});

then open postman and fill in the following information for the components.

First, check the information all users have in the table

Next comes adding a new user

you can choose raw or form-data to add a new user here i add with raw .If you use form-data add like image below then press send to receive the result

The update is similar, you just need to enter the corresponding user id, the new data will be updated

And finally delete the user, please update the corresponding url you are using to delete and send

Good luck