Метод Ax ios GET с Laravel и Vue. JS, возвращающими ошибку 404 в консоли javascript - PullRequest
0 голосов
/ 27 апреля 2020

Я получаю следующую ошибку:

GET http://backend.test/test?last_name=DOE 404 (не найдено)

При попытке использовать следующий метод GET :

Мой запрос GET в Vue. JS:

    testMethod: _.debounce(async function () {
      await axios.get('test', { params: { last_name: 'DOE' } })
        .then((response) => {
          console.log(response);
        })
        .catch((error) => {
          console.log(error);
        });
    }, 50),

Маршрут в Laravel:

Route::get('test/{params}', 'TestController@filter');

Метод в моем Laravel 's TestController.php (не пройдено):

    public function filter($params)
    {
        Log::info($params);
    }

Что с ним не так?

=== РЕДАКТИРОВАТЬ ===

Если я переписываю маршрут как this:

Route::get('test/{params?}', 'TestController@filter');

Затем я получаю следующую ошибку в Laravel журналах:

[2020-04-26 21:28:48] local.ERROR: Слишком мало аргументы для функции App \ Http \ Controllers \ TestController :: filter (), 0 передано и ожидается ровно 1 {userId: 1, "exception": "[object] (ArgumentCountError (code: 0): слишком мало аргументов для функции App \ Http \ Controllers \ TestController :: filter (), 0 пройдено и ровно 1 ожидается в /Users/me/code/backend/app/Http/Controllers/TestController.php:10)

1 Ответ

2 голосов
/ 27 апреля 2020

Поскольку Route::get('test/{params}', 'TestController@filter'); маршрут ожидает, что params будет обязательным; добавление ? к params сделает его необязательным.

Route::get('test/{params?}', 'TestController@filter');

Чтобы получить last_name, необходимо обновить метод контроллера следующим образом;

use Illuminate\Http\Request;

class TestController
{
    public function index(Request $request)
    {
        $request->get('last_name');
        // actions
    }
}
...