ресурс API возвращает 404 Not Found - PullRequest
0 голосов
/ 28 сентября 2019

это мои API:

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

$api->version('v1', ['as' => 'admin',
                     'middleware' => 'api.auth',
                     'namespace' => 'Modules\OrgUnit\Http\Controllers'], function ($api) {

    $api->group(['prefix' => 'admin/org_units', 'as' => 'org_units'], function ($api) {

            $api->get('/datatable', 'OrgUnitController@datatable')->name('.datatable');

            $api->resource('/', 'OrgUnitController');
    });

});

, но api/v1/admin/org_units/datatable работает найти, но api/v1/admin/org_units/3 возвращает 404 Not Found сообщение.

мой список маршрутов:

|      | GET|HEAD                       | /api/v1/admin/org_units/datatable                                                                   | admin.org_units.datatable                                                               | Modules\OrgUnit\Http\Controllers\OrgUnitController@datatable                                                       | Yes       | v1         |          |            |
|      | GET|HEAD                       | /api/v1/admin/org_units                                                                             | admin.org_units.index                                                                   | Modules\OrgUnit\Http\Controllers\OrgUnitController@index                                                           | Yes       | v1         |          |            |
|      | POST                           | /api/v1/admin/org_units                                                                             | admin.org_units.store                                                                   | Modules\OrgUnit\Http\Controllers\OrgUnitController@store                                                           | Yes       | v1         |          |            |
|      | GET|HEAD                       | /api/v1/admin/org_units/{}                                                                          | admin.org_units.show                                                                    | Modules\OrgUnit\Http\Controllers\OrgUnitController@show                                                            | Yes       | v1         |          |            |
|      | PUT|PATCH                      | /api/v1/admin/org_units/{}                                                                          | admin.org_units.update                                                                  | Modules\OrgUnit\Http\Controllers\OrgUnitController@update                                                          | Yes       | v1         |          |            |
|      | DELETE                         | /api/v1/admin/org_units/{}                                                                          | admin.org_units.destroy                                                                 | Modules\OrgUnit\Http\Controllers\OrgUnitController@destroy                                                         | Yes       | v1         |          |            |

Я думаю, что конец моего списка маршрутов должен быть org_unit параметрами, но результат будет пустым ({})!

1 Ответ

1 голос
/ 28 сентября 2019

Передайте пропущенный параметр при создании маршрута

$api->resource('/{org_unit}', 'Modules\OrgUnit\Http\Controllers\OrgUnitController');

Убедитесь, что в вашей OrgUnit модели * указано имя ключа маршрута

public function getRouteKeyName()
{
   return 'id';
}

Из документов

Вы также можете зарегистрировать ресурсы и контроллеры, используя соответствующие методы.

Обратите внимание, что необходимо указать полное пространство имен для контроллера, например, App \ Http \ Controllers.

Вы также можете передавать такие параметры, как См.

$api->resource('org_units', 'Modules\OrgUnit\Http\Controllers\OrgUnitController', [
       'parameters' => ['org_unit' => 'application'],
])->middlware('bindings');
...