通过 Laravel Route 在变量中传递“\”和“/”

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,但不幸的是,我传递的变量超出了我的控制(例如,我不能简单地不使用 \ 或 /)。

有没有人有任何建议或可以指出我正确的方向?

谢谢。

tom*_*der 0

正如您从原始问题的评论中看到的,我试图在 URL 中传递的变量是我之前使用的 API 调用的结果json_encodejson_encode会自动尝试转义正斜杠,因此附加的 \ 被添加到变量中。我JSON_UNESCAPED_SLASHES在原来的调用中添加了一个标志,瞧,一切都按预期工作。