タイトル通り。 Laravel 5.6のデフォルトのAPIミドルウェアはKernel.php
なので:
protected $middlewareGroups = [
'api' => [
'throttle:60,1',
'bindings',
],
];
どこでも見つけることができないbindings
の動作についての素人の説明に感謝します。
SubstituteBindings
メソッドを持つhandle
クラスを使用します。
public function handle($request, Closure $next)
{
$this->router->substituteBindings($route = $request->route());
$this->router->substituteImplicitBindings($route);
return $next($request);
}
私はそれが何をしているのかまだ従いませんが。
私は同じ質問をして、これを見つけることができました:
「
Route model binding
はミドルウェアを使用して実現されています。すべてのアプリケーションは、app/Http/Kernel.phpファイルのWebミドルウェアグループにIlluminate\Routing\Middleware\SubstituteBindingsを追加する必要があります。\ Illuminate\Routing\Middleware\SubstituteBindings :: class、
また、HTTPカーネルの$ routeMiddlewareプロパティにバインディング置換用のルートミドルウェアを登録する必要があります。
'バインディング' =>\Illuminate\Routing\Middleware\SubstituteBindings :: class、... "
これはこのページにあります- https://laravel.com/docs/5.3/upgrade
上記の答えは元々このソースからのものでした- https://stackoverflow.com/a/47784205/308984
つまり、bindings
ミドルウェアは\Illuminate\Routing\Middleware\SubstituteBindings::class
の単なる短縮形であるように思えますが、これが正しい場合、なぜLaravelがweb
との両方で同じ用語を使用していないのかわかりませんKernel.php
のapi
配列。web
配列で\Illuminate\Routing\Middleware\SubstituteBindings::class
を使用し、bindings
配列でapi
を使用するのは、一貫性がなく混乱しているようです。
あなたが求めているのはこれだと思います https://laravel.com/docs/5.7/routing#route-model-binding
Route::get('api/users/{user}', function (App\User $user) {
return $user->email;
});
それはすぐにUserモデルをバインドします。