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

Passing "\" and "/" in variable via Laravel Route

首先,如果这是一个不好的地方,我们深表歉意question/practice。我是 Laravel 的新手,所以我还在努力掌握它。

我试图在 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:

我在 Whosebug 上做了一些搜索,最后使用了以下代码,它几乎可以工作,但是,它似乎正在将 \ 转换为 /。

路线:

Route::group(array('prefix' => 'api/v1'), function() {
    Route::get('service/{slashData}', 'ServiceController@getData')
    ->where('slashData', '(.*)');
});

控制器:

public function getData($slashData = null) {
    if($slashData) {
        return $slashData;
    }
}

结果:

DfDte//uM5fy582WtmkFLJg==

如您所见,它正在传递 var 但似乎正在将 \ 转换为 /。

我正在尝试创建一个 API,不幸的是,我传递的变量超出了我的控制范围(例如,我不能简单地不使用 \ 或 /)。

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

谢谢。

你不应该那样做。 Laravel会认为是新参数,因为"/"。相反,在参数中使用 htmlentititeshtml_entity_decode,或使用 POST.

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