BEAR.Package\Provide\Router\AuraRouterクラス(for Aura Router v1.x)でのルーティング設定がある場合のHTTPメソッド決定方法についてです。
この議論は下記ツイートから始まっています。
https://twitter.com/mugeso/status/432477193931722752
現状では、下記のように決定が行われています。
このとき参照している$router->valuesは下記のどれかです。
- マッチしたrouteの中でサブパターンとして指定された部分
例:
$map->add('article','/blog/article/{:id}');
の場合"id"の値
- マッピング時にvaluesパラメーターを使ってデフォルト値として与えた値
例:
$map->add('article', '/blog/article/{:id}', ['values' => ['format' =>'json']]);
の場合の'format'
これには、マッチング時に利用したHTTPメソッドは含まれていないようです。
この条件で現状のAuraRouterクラスを利用するには、マッピング時に次のようにする必要があります。
$map->add(
'article',
'/blog/article/{:id}',
['values' =>['method' =>'get']]
);
しかし、これには問題があり、 '/blog/article/{:id}'がPUTやDELETEも受け取る場合にも全部"get"にされてしまいます。
また、僕が確認した限りではAura Router 1.xでは、マッチング時に利用したHTTP メソッドは保持していないようです。
結論としては、基本は$_SERVER['REQUEST_METHOD']からの取得にし$route->values['method']はオプションで上書きできる形にすればよいと思われます。
PS.
BEAR.PackageのRouterクラスでX-HTTP-Method-Overrideをヘッダーではなくpostパラメーターとして受け取っているのも気になってます。