通过“";以及“/";通过Laravel Route可变


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

首先,如果这是一个糟糕的问题/做法,请道歉。我对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:

我在StackOverflow上做了一些搜索,最终使用了以下代码,这几乎有效,但它似乎正在将''转换为/。

路线:

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

有人能给我什么建议吗?或者能给我指明正确的方向吗?

谢谢。

正如您从对原始问题的评论中看到的,我试图在URL中传递的变量是我在上一次API调用中使用json_encode的结果。json_encode将自动尝试并转义正斜杠,因此将附加的''添加到变量中。我在原来的调用中添加了一个JSON_UNESCAPED_SLASHES标志,瞧,一切都按预期进行。

您不应该这样做。Laravel会认为这是一个新的参数,因为"/"。相反,在参数中使用htmlentititeshtml_entity_decode,或者使用POST