首先,如果这是一个糟糕的问题/做法,请道歉。我对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会认为这是一个新的参数,因为"/"。相反,在参数中使用htmlentitites
和html_entity_decode
,或者使用POST
。