我想了解Laravel中API资源背后的概念。如果我理解了答案,我就会阅读here。如果我有一个自定义端点,并且为该控制器定义了apiresource端点。当我在控制器上调用自定义端点时,apiresource端点(如show、store)是否会被自动调用?
下面是我的例子:
Route::post('postorderitems', 'Api\OrderitemsController@postOrderItem')->middleware('auth:api');如果我调用它,并且定义了以下内容:
Route::apiResource('orderitems', 'Api\OrderitemsController')->middleware('auth:api');OrderitemsController中的存储方法会被自动调用吗?
发布于 2020-03-01 15:13:00
Route::apiResource()为给定的资源定义REST API路由:index、store、view、update和destroy。
您的控制器可能定义了与上述名称相同的公共方法。如果控制器有这些方法,那么,是的,路由将与控制器函数“关联”。
Route::apiResource('orderitems', 'Api\OrderitemsController')->middleware('auth:api');
向orderitems发送POST请求将由Api\OrderitemsController@store方法处理。
我建议运行php artisan route:list命令来查看路由指向哪个控制器的方法。
发布于 2020-03-01 15:21:43
根据Laravel文档
在声明将由API使用的资源路由时,您通常希望排除呈现
create和edit等HTML模板的路由。为方便起见,您可以使用apiResource方法自动排除这两条路由:
Route::apiResource('photos', 'PhotoController');因此,如果您按如下方式定义了apiResource,并向orderitems发送了POST请求,则只会自动调用OrderitemsController的store方法中的store方法。
Route::apiResource('orderitems', 'Api\OrderitemsController')->middleware('auth:api');参考资料:
https://stackoverflow.com/questions/60472490
复制相似问题