Laravel группа маршрутов не используется должным образом - PullRequest
0 голосов
/ 20 апреля 2020

Я создал 2 группы маршрутов в моем файле маршрутов API и не могу получить доступ к маршрутам второй группы.

Первая группа:

$api     = app('Dingo\Api\Routing\Router');
$request = app('\Dingo\Api\Http\Request');

$api->dispatch($request);
/* API V1 ROUTES */

$prefix = 'test';

$api->group(['prefix' => $prefix,'version'=> 'v1'],function($api) {

    $api->post('/entity/validate/{code}', [
        'as'    => 'validate.code',
        'uses'  => 'App\Http\Controllers\XXX\Api\SmsController@validateCodeV1',
    ]);
});

Это работает отлично, и я достичь моей функции validateCodeV1, которая отлично выполняет свою работу. С другой стороны, у меня есть сразу после этого Вторая группа:

$prefix = 'testv2';
$api->group(['prefix' => $prefix,'version'=> 'v2'],function($api) {

    $api->post('/entity/validate/{code}', [
        'as'    => 'validate.code',
        'uses'  => 'App\Http\Controllers\XXX\Api\SmsController@validateCode',
    ]);
});

Здесь у меня есть 404, когда я пытаюсь вызвать мой API с префиксом testv2 / entity / validate / XXX

Я надеваю не знаю, как правильно указать префикс для замены маршрута от v1 до маршрута v2 ... Я использую Laravel 5.5

EDIT: проверка маршрутов содержит только один из 2 моих маршрутов, даже после очистка кеша:

php artisan route:list | grep entity/validate
|        | POST                                   | /test/entity/validate/{code}                                                                       | validate.code                                | Closure                                                                                                    | api.controllers               |

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Я попробовал ваш код и изменил $ api -> на Route :: , и оба работают так, как должны, и перечислены в php artisan route: list.

$prefix = 'test';
Route::group(['prefix' => $prefix,'version'=> 'v1'],function($api) {
    Route::post('/entity/validate/{code}', [
        'as'    => 'validate.code',
        'uses'  => 'App\Http\Controllers\XXX\Api\SmsController@validateCodeV1',
    ]);
});

$prefix = 'testv2';
Route::group(['prefix' => $prefix,'version'=> 'v2'],function($api) {
    Route::post('/entity/validate/{code}', [
        'as'    => 'validate.code',
        'uses'  => 'App\Http\Controllers\XXX\Api\SmsController@validateCode',
    ]);
});

Я думаю, вы можете проверить свой $ api или $ request, возможно, есть ошибка, функция или что-то еще, что позволяет только версию v1.

0 голосов
/ 21 апреля 2020

Я исправил это, смешав 2 решения этого поста: Din go API - Как добавить номер версии в URL? Это не совсем дубликат, поэтому я разрешу свой пост, но если кто-то думаю, что удаляется мой пост, просто спросите, и я сделаю это

...