Skip to content

jackpit93/laravel-multiple-responder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Specific Response For Each Request.

This package will help you to create specific responder for browser,mobile,spa,etc.

⬇️ Installation

You can install the package via composer:

composer require devnajjary/laravel-multiple-responder
php artisan responder:generate

🤔 How to Use?

create your responder:

php artisan make:responder Mobile

after that,it make file in this paths:

App/Http/Responder/Mobile.php

📝 Real use example

We want to have one output for each mobile, browser and SPA. What to do?🤔 first create responders like this:

php artisan make:responder SPA
php artisan make:responder Mobile

now go to your controller,Suppose your controller looks like this:

namespace App\Http\Controllers;

class YourController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('your-blade-file');
    }
}

Now what if we want to have Jason output for mobile?The answer is this. easily rewrite your controller:

namespace App\Http\Controllers;

use DevNajjary\laravelMultipleResponder\Facade\Responder;

class YourController extends Controller
{
    public function index()
    {
        $users = User::all();
        return Responder::showUsers($users);
    }
}

Now define the user method in any file you want default Responder(for browser response):

namespace App\Http\Responder;

class DefaultResponder
{
 public const HEADER = 'DefaultResponder';

    public function showUsers($users)
    {
        return view('your-blade',compact($users));
    }
}

App\Http\Responder\Mobile.php :

namespace App\Http\Responder;

class Mobile
{
    public const HEADER = 'Mobile';

    public function showUsers($users)
    {
        return UserResourse::collection($users);
    }
}

App\Http\Responder\Spa.php

namespace App\Http\Responder;

class Spa
{
    public const HEADER = 'Spa';

    public function showUsers($users)
    {
        return [
            'users' => UserResourse::collection($users),
            'additional-data' => 'whatever'
        ];
    }
}

What is the use of Header?

The point is not to forget that you have to set a const HEADER for each Responder All your requests from mobile or spa should be a header with 'Client' key and HEADER value; for SPA like this:

axios.post('url', {"body":data}, {
    headers: {
    'Client': 'Spa'
    }
  }
)

how to change 'Client' string ?

run this

php artisan vendor:publish  --tag="responder"

And go to config/responder.php change header_key to What you love.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Specific Response For Each Request.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages