这些是我的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
参数,但结果为空({}
)!
答案 0 :(得分:1)
在创建路线时传递缺少的参数
$api->resource('/{org_unit}', 'Modules\OrgUnit\Http\Controllers\OrgUnitController');
请确保在您的OrgUnit
模型中使用路由密钥名称
public function getRouteKeyName()
{
return 'id';
}
来自the docs
您还可以使用相应的方法注册资源和控制器。
请注意,您必须为控制器指定完整的名称空间,例如App \ Http \ Controllers。
您还可以像这样See This
传递参数$api->resource('org_units', 'Modules\OrgUnit\Http\Controllers\OrgUnitController', [
'parameters' => ['org_unit' => 'application'],
])->middlware('bindings');