-1

I am trying to call an url with question mark in Laravel... I am working on a calculator api that uses the following url, for example:

'api/calculator/add?a={a}&b={b}'

HOW do I call such an URL??

I have the following routes in api.php:

Route::get('/calculator/add?a={a}&b={b}', function ($a, $b ) {
    return Calculator::sub($a, $b);
})

Route::get('/calculator/sub?a={a}&b={b}', function ($a, $b ) {
    return Calculator::sub($a, $b);
});
Route::get('/calculator/div?a={a}&b={b}', function ($a, $b ) {
    return Calculator::div($a, $b);
});
Route::get('/calculator/mul?a={a}&b={b}', function ($a, $b ) {
    return Calculator::mul($a, $b);
});
Route::get('/calculator/mod?a={a}&b={b}', function ($a, $b ) {
    return Calculator::mod($a, $b);
});

I also have a CalculatorController:

use Illuminate\Http\Request;
use App\Calculator;
use App\Http\Requests\CalculatorRequest;

class CalculatorController extends Controller
{
    private calculator = new Calculator();

    public function add(CalculatorRequest $request)
    {
        // TODO @laravel-test
        echo var_dump($request);
        $request->validate( [
            'a' => ['required', new CalculatorRequest()]
            'b' => ['required', new CalculatorRequest()]
        ]);

        // Calculate and return the result...
    }

    public function sub(CalculatorRequest $request)
    {
        // TODO @laravel-test
        $request->validate( [
            'a' => ['required', new CalculatorRequest()]
            'b' => ['required', new CalculatorRequest()]
        ]);

        // Calculate and return the result...
    }


    public function div(CalculatorRequest $request)
    {
        // TODO @laravel-test
        $request->validate( [
            'a' => ['required', new CalculatorRequest()]
            'b' => ['required', new CalculatorRequest()]
        ]);

        // Calculate and return the result...
    }

    public function mul(CalculatorRequest $request)
    {
        // TODO @laravel-test
        $request->validate( [
            'a' => ['required', new CalculatorRequest()]
            'b' => ['required', new CalculatorRequest()]
        ]);

        // Calculate and return the result...
    }

    public function mod(CalculatorRequest $request)
    {
        // TODO @laravel-test
        $request->validate( [
            'a' => ['required', new CalculatorRequest()]
            'b' => ['required', new CalculatorRequest()]
        ]);

        // Calculate and return the result...
    }
}

I could not find ANY information on the internet.. How can I do this?

Thanks in advance.

FFB
  • 87
  • 7
  • Best way is to use variables in path. Maybe this will help: https://stackoverflow.com/questions/27298426/how-to-pass-get-parameters-to-laravel-from-with-get-method – Mojo Allmighty Jun 14 '21 at 21:57

1 Answers1

2

From what I know, you can't do this.

When you do url/something?a=123&b=456, you are able to then do:

public function show(Request $request)
{
    $a = $request->input('a');
    $b = $request->input('b');

    dd($a, $b); // $a = 123, $b = 456
}

But your route is going to be:

Route::get('url/something', [YourController::class, 'show']);
matiaslauriti
  • 7,065
  • 4
  • 31
  • 43