tom*_*der 5 php laravel laravel-routing laravel-5.2
首先,如果这是一个糟糕的问题/做法,我们深表歉意。我对 Laravel 很陌生,所以我仍在掌握它。
我试图在 Laravel 5 路由中传递一个包含正斜杠 (/) 和反斜杠 () 的变量,但遇到了一些困难。
我使用的是以下情况:api.dev/api/v1/service/DfDte\/uM5fy582WtmkFLJg==
。
尝试 1:
我的第一次尝试使用了以下代码,结果自然是 404。
路线:
Route::group(array('prefix' => 'api/v1'), function() {
Route::resource('service', 'ServiceController');
});
Run Code Online (Sandbox Code Playgroud)
控制器:
public function show($service) {
return $service;
}
Run Code Online (Sandbox Code Playgroud)
结果:
404
Run Code Online (Sandbox Code Playgroud)
尝试 2:
我在 StackOverflow 上做了一些搜索并最终使用了以下代码,这几乎可以工作,但是,它似乎正在将 \ 转换为 /。
路线:
Route::group(array('prefix' => 'api/v1'), function() {
Route::get('service/{slashData}', 'ServiceController@getData')
->where('slashData', '(.*)');
});
Run Code Online (Sandbox Code Playgroud)
控制器:
public function getData($slashData = null) {
if($slashData) {
return $slashData;
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
DfDte//uM5fy582WtmkFLJg==
Run Code Online (Sandbox Code Playgroud)
如您所见,它正在传递 var 但似乎正在将 \ 转换为 /。
我正在尝试创建一个 API,但不幸的是,我传递的变量超出了我的控制(例如,我不能简单地不使用 \ 或 /)。
有没有人有任何建议或可以指出我正确的方向?
谢谢。
正如您从原始问题的评论中看到的,我试图在 URL 中传递的变量是我之前使用的 API 调用的结果json_encode
。json_encode
会自动尝试转义正斜杠,因此附加的 \ 被添加到变量中。我JSON_UNESCAPED_SLASHES
在原来的调用中添加了一个标志,瞧,一切都按预期工作。