まず、悪い質問/練習である場合は、お詫び申し上げます。私はLaravelにとってはとても新しいので、まだそれを把握しています。Laravel Route経由で変数に ""と "/"を渡す
Laravel 5ルートでスラッシュ(/)とバックスラッシュ()を含む変数を渡そうとしていますが、いくつか問題があります。
私は以下を使用しています:api.dev/api/v1/service/DfDte\/uM5fy582WtmkFLJg==
試み1:私の最初の試みは、以下のコードを使用し、自然404
ルートをもたらし
:
Route::group(array('prefix' => 'api/v1'), function() {
Route::resource('service', 'ServiceController');
});
コントローラー:
public function show($service) {
return $service;
}
結果:
404
試み2:
しかし私は、それが変換されるように見える、StackOverflowの上での検索のビットを行なったし、ほとんどの作品次のコードを、使用して終了\ to /。
ルート:
Route::group(array('prefix' => 'api/v1'), function() {
Route::get('service/{slashData}', '[email protected]')
->where('slashData', '(.*)');
});
コントローラー:
public function getData($slashData = null) {
if($slashData) {
return $slashData;
}
}
結果:
DfDte//uM5fy582WtmkFLJg==
あなたはそれがだ、見ることができるようにvarを渡しますが、\を/に変換しているようです。
私はAPIを作成しようとしていますが、残念ながら渡す変数が制御できません(たとえば、\や/は使用できません)。
誰にもアドバイスがありますか、または正しい方向に私を指すことができますか?
ありがとうございました。
'apiの場合。dev/api/v1/service/DfDte \/uM5fy582WtmkFLJg == 'はリクエストURLを意図しているので、明らかに無効であることに注意してください。バックスラッシュはURL内の有効な文字ではありませんが、 "パーセントエンコード"する必要があります。実際には次のスラッシュをエスケープしたい場合は同様に、バックスラッシュは使用しないで、代わりにURLをエンコードしてください。 URLの正式な定義が要求するのと同様です。 – arkascha
残念ながら、\は実際には変数として渡そうとしているIDの一部です。変数をエンコードしようとしました。 'DfDte%5C%2FuM5fy582WtmkFLJg%3D%3D'であるが、「試行2」で提供されたコードを使用して別の404につながる。 – tombraider
確かにあなたのデータモデルはわかりませんが、リテラルシーケンス '\ /'を含むIDは私にはほとんど聞こえません。あなたは本当にこれが単なるスラッシュを逃れることを意図した表記ではないと確信していますか? – arkascha