php - api 资源返回 404 Not Found
问题描述
这些是我的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
参数,但结果是空的({}
)!
解决方案
创建路由时传递缺少的参数
$api->resource('/{org_unit}', 'Modules\OrgUnit\Http\Controllers\OrgUnitController');
OrgUnit
确保模型中有路由键名称
public function getRouteKeyName()
{
return 'id';
}
从文档
您还可以使用相应的方法注册资源和控制器。
请注意,您必须为控制器指定完整的命名空间,例如,App\Http\Controllers。
您也可以像这样传递参数See This
$api->resource('org_units', 'Modules\OrgUnit\Http\Controllers\OrgUnitController', [
'parameters' => ['org_unit' => 'application'],
])->middlware('bindings');
推荐阅读
- excel - 如何在特定日期过去后锁定单元格值
- date - Kibana + 可视化 + 时间戳格式(YY MMM dd, ddd)
- git - git status“无法打开目录”“权限被拒绝”错误
- prismic.io - 用于 Prismic 项目、prismic-javascript、@prismicio/client、prismic-dom、prismic-reactjs
- javascript - 为什么每次打开时 DOM 都会更新(chrome 扩展)?
- opengl - 如何在openGL中处理每个顶点的多个UV
- javascript - 如何修复无法读取未定义的属性“错误”
- c# - 在 C# 中比较非托管函数指针有哪些替代方法(如何修复 CS8909)?
- mysql - MySQL 从 3 个关系表中为每个产品选择 N 个最新行
- django - Django UpdateView 中的 {{ form.object }}